diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1421eeacc9..3a6ae039f0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,6 @@ concurrency: env: COMPOSE_FILE: docker-compose.yml IMAGE: appwrite-dev - CACHE_KEY: appwrite-dev-${{ github.event.pull_request.head.sha }} on: pull_request: @@ -84,6 +83,31 @@ jobs: sarif_file: 'trivy-fs-results.sarif' category: 'trivy-source' + composer: + name: Checks / Composer + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v6 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + tools: composer:v2 + coverage: none + + - name: Validate + run: composer validate + + - name: Install dependencies + run: composer install --prefer-dist --no-progress --ignore-platform-reqs + + - name: Audit + env: + COMPOSER_NO_AUDIT: 0 + run: composer audit + format: name: Checks / Format runs-on: ubuntu-latest @@ -96,15 +120,18 @@ jobs: - run: git checkout HEAD^2 if: github.event_name == 'pull_request' - - name: Validate composer.json and composer.lock - run: | - docker run --rm -v $PWD:/app composer:2.8 sh -c \ - "composer validate" + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + tools: composer:v2 + coverage: none + + - name: Install dependencies + run: composer install --prefer-dist --no-progress --ignore-platform-reqs - name: Run Linter - run: | - docker run --rm -v $PWD:/app composer:2.8 sh -c \ - "composer install --profile --ignore-platform-reqs && composer lint" + run: composer lint analyze: name: Checks / Analyze @@ -113,15 +140,33 @@ jobs: - name: Check out the repo uses: actions/checkout@v6 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + tools: composer:v2 + coverage: none + + - name: Install dependencies + run: composer install --prefer-dist --no-progress --ignore-platform-reqs + - name: Run PHPStan - run: | - docker run --rm -v $PWD:/app composer:2.8 sh -c \ - "composer install --profile --ignore-platform-reqs && composer analyze" + run: composer analyze + + locale: + name: Checks / Locale + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v6 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: '24' - name: Run Locale check - run: | - docker run --rm -v $PWD:/app node:24-alpine sh -c \ - "cd /app/.github/workflows/static-analysis/locale && node index.js" + run: node .github/workflows/static-analysis/locale/index.js matrix: name: Tests / Matrix @@ -202,11 +247,12 @@ jobs: TESTING=true VERSION=dev - - name: Cache Docker Image - uses: actions/cache@v5 + - name: Upload Docker Image + uses: actions/upload-artifact@v7 with: - key: ${{ env.CACHE_KEY }} + name: ${{ env.IMAGE }} path: /tmp/${{ env.IMAGE }}.tar + retention-days: 1 unit: name: Tests / Unit @@ -219,12 +265,11 @@ jobs: - name: checkout uses: actions/checkout@v6 - - name: Load Cache - uses: actions/cache@v5 + - name: Download Docker Image + uses: actions/download-artifact@v7 with: - key: ${{ env.CACHE_KEY }} - path: /tmp/${{ env.IMAGE }}.tar - fail-on-cache-miss: true + name: ${{ env.IMAGE }} + path: /tmp - name: Login to Docker Hub uses: docker/login-action@v4 @@ -267,12 +312,11 @@ jobs: - name: checkout uses: actions/checkout@v6 - - name: Load Cache - uses: actions/cache@v5 + - name: Download Docker Image + uses: actions/download-artifact@v7 with: - key: ${{ env.CACHE_KEY }} - path: /tmp/${{ env.IMAGE }}.tar - fail-on-cache-miss: true + name: ${{ env.IMAGE }} + path: /tmp - name: Login to Docker Hub uses: docker/login-action@v4 @@ -317,7 +361,7 @@ jobs: e2e_service: name: Tests / E2E / ${{ matrix.database }} (${{ matrix.mode }}) / ${{ matrix.service }} - runs-on: ubuntu-latest + runs-on: ${{ matrix.runner || 'ubuntu-latest' }} needs: [build, matrix] permissions: contents: read @@ -346,21 +390,34 @@ jobs: Tokens, Teams, Users, + ProjectWebhooks, Webhooks, VCS, Messaging, Migrations ] + include: + - service: Databases + runner: blacksmith-4vcpu-ubuntu-2404 + - service: Sites + runner: blacksmith-4vcpu-ubuntu-2404 + - service: Functions + runner: blacksmith-4vcpu-ubuntu-2404 + - service: Avatars + runner: blacksmith-4vcpu-ubuntu-2404 + - service: Realtime + runner: blacksmith-4vcpu-ubuntu-2404 + - service: TablesDB + runner: blacksmith-4vcpu-ubuntu-2404 steps: - name: Checkout repository uses: actions/checkout@v6 - - name: Load Cache - uses: actions/cache@v5 + - name: Download Docker Image + uses: actions/download-artifact@v7 with: - key: ${{ env.CACHE_KEY }} - path: /tmp/${{ env.IMAGE }}.tar - fail-on-cache-miss: true + name: ${{ env.IMAGE }} + path: /tmp - name: Set database environment run: | @@ -449,12 +506,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v6 - - name: Load Cache - uses: actions/cache@v5 + - name: Download Docker Image + uses: actions/download-artifact@v7 with: - key: ${{ env.CACHE_KEY }} - path: /tmp/${{ env.IMAGE }}.tar - fail-on-cache-miss: true + name: ${{ env.IMAGE }} + path: /tmp - name: Login to Docker Hub uses: docker/login-action@v4 @@ -508,12 +564,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v6 - - name: Load Cache - uses: actions/cache@v5 + - name: Download Docker Image + uses: actions/download-artifact@v7 with: - key: ${{ env.CACHE_KEY }} - path: /tmp/${{ env.IMAGE }}.tar - fail-on-cache-miss: true + name: ${{ env.IMAGE }} + path: /tmp - name: Login to Docker Hub uses: docker/login-action@v4 @@ -569,12 +624,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v6 - - name: Load Cache - uses: actions/cache@v5 + - name: Download Docker Image + uses: actions/download-artifact@v7 with: - key: ${{ env.CACHE_KEY }} - path: /tmp/${{ env.IMAGE }}.tar - fail-on-cache-miss: true + name: ${{ env.IMAGE }} + path: /tmp - name: Login to Docker Hub uses: docker/login-action@v4 diff --git a/.gitignore b/.gitignore index 6aac1bbbf4..d6e138a382 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,9 @@ appwrite.config.json /app/config/specs/ /docs/examples/ .phpunit.cache +playwright-report +test-results +docker-compose.web-installer.yml +.env.web-installer +docker-compose.web-installer.yml.**.backup +tests/playwright/screenshots diff --git a/CHANGES.md b/CHANGES.md index e6dd04b556..548c0d72b0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,100 +1,133 @@ -# Version 1.8.1 +# Version 1.9.0 ## What's Changed ### Notable changes -* Add branch deployments support in [#10486](https://github.com/appwrite/appwrite/pull/10486) -* Add TanStack Start sites support in [#10681](https://github.com/appwrite/appwrite/pull/10681) -* Add Next.js standalone support in [#10747](https://github.com/appwrite/appwrite/pull/10747) -* Add Resend integration in [#10690](https://github.com/appwrite/appwrite/pull/10690) -* Add option to enable/disable image transformations per-bucket in [#10722](https://github.com/appwrite/appwrite/pull/10722) -* Add operators support in [#10735](https://github.com/appwrite/appwrite/pull/10735) and [#10800](https://github.com/appwrite/appwrite/pull/10800) -* Add function and sites stats in [#10786](https://github.com/appwrite/appwrite/pull/10786) -* Add disable count feature in [#10668](https://github.com/appwrite/appwrite/pull/10668) -* Add ElevenLabs site template in [#10782](https://github.com/appwrite/appwrite/pull/10782) -* Add suggested environment variables in [#10795](https://github.com/appwrite/appwrite/pull/10795) -* Update GeoDB database in [#10890](https://github.com/appwrite/appwrite/pull/10890) -* Update Flutter default build runtime in [#10807](https://github.com/appwrite/appwrite/pull/10807) -* Upgrade runtimes in [#10804](https://github.com/appwrite/appwrite/pull/10804) +* Add PostgreSQL database adapter in [#9772](https://github.com/appwrite/appwrite/pull/9772) and [#11293](https://github.com/appwrite/appwrite/pull/11293) +* Add MongoDB support in [#11312](https://github.com/appwrite/appwrite/pull/11312) +* Add new webhooks API in [#11033](https://github.com/appwrite/appwrite/pull/11033) and [#11566](https://github.com/appwrite/appwrite/pull/11566) +* Add schedules API endpoints in [#11331](https://github.com/appwrite/appwrite/pull/11331) +* Add project labels in [#11056](https://github.com/appwrite/appwrite/pull/11056) and project status attribute in [#11291](https://github.com/appwrite/appwrite/pull/11291) +* Add resource-based API key structure in [#11003](https://github.com/appwrite/appwrite/pull/11003) with custom ID support in [#11277](https://github.com/appwrite/appwrite/pull/11277) and list queries in [#11278](https://github.com/appwrite/appwrite/pull/11278) +* Add string types (varchar, text, mediumtext, longtext) for attributes in [#11174](https://github.com/appwrite/appwrite/pull/11174) +* Add encrypt parameter to string attribute types in [#11334](https://github.com/appwrite/appwrite/pull/11334) +* Add int64 format support for integer attributes in [#11123](https://github.com/appwrite/appwrite/pull/11123) +* Add collection and row storage size in [#11254](https://github.com/appwrite/appwrite/pull/11254) and [#11069](https://github.com/appwrite/appwrite/pull/11069) +* Add totalSize on list responses in [#11102](https://github.com/appwrite/appwrite/pull/11102) +* Add custom start command for sites and functions in [#10842](https://github.com/appwrite/appwrite/pull/10842) +* Add separate build/runtime specifications in [#10849](https://github.com/appwrite/appwrite/pull/10849) +* Add deployment retention for sites and functions in [#10959](https://github.com/appwrite/appwrite/pull/10959) +* Add auto-delete old deployments in [#10959](https://github.com/appwrite/appwrite/pull/10959) +* Add custom JWT duration in [#11009](https://github.com/appwrite/appwrite/pull/11009) +* Add multiple application domains support in [#10911](https://github.com/appwrite/appwrite/pull/10911) +* Add GraphQL introspection in [#11159](https://github.com/appwrite/appwrite/pull/11159) +* Add realtime query subscriptions in [#11202](https://github.com/appwrite/appwrite/pull/11202) and [#11237](https://github.com/appwrite/appwrite/pull/11237) +* Add realtime metrics for connections, messages, and bandwidth in [#11438](https://github.com/appwrite/appwrite/pull/11438) and [#11488](https://github.com/appwrite/appwrite/pull/11488) +* Add messaging resource migration support in [#11495](https://github.com/appwrite/appwrite/pull/11495) +* Add cached documents list in [#10832](https://github.com/appwrite/appwrite/pull/10832) +* Add project queries support in [#10990](https://github.com/appwrite/appwrite/pull/10990) +* Add batch document creation in [#10894](https://github.com/appwrite/appwrite/pull/10894) +* Add async screenshots in [#11110](https://github.com/appwrite/appwrite/pull/11110) +* Add new file parameters (encryption, compression) in [#11135](https://github.com/appwrite/appwrite/pull/11135) +* Add new site templates in [#10031](https://github.com/appwrite/appwrite/pull/10031) +* Add VCS repository authorized field in [#11421](https://github.com/appwrite/appwrite/pull/11421) +* Add trusted console projects in [#11248](https://github.com/appwrite/appwrite/pull/11248) + +### Refactoring + +* Refactor to Utopia Platform modules architecture in [#11035](https://github.com/appwrite/appwrite/pull/11035), [#11049](https://github.com/appwrite/appwrite/pull/11049), [#11057](https://github.com/appwrite/appwrite/pull/11057), [#11103](https://github.com/appwrite/appwrite/pull/11103), [#11208](https://github.com/appwrite/appwrite/pull/11208), and [#11398](https://github.com/appwrite/appwrite/pull/11398) +* Refactor auth to single instance in [#10872](https://github.com/appwrite/appwrite/pull/10872) and [#11130](https://github.com/appwrite/appwrite/pull/11130) +* Refactor usage metrics to stateless publisher pattern in [#11449](https://github.com/appwrite/appwrite/pull/11449) +* Refactor messaging and queue in [#10961](https://github.com/appwrite/appwrite/pull/10961) +* Refactor functions schedule in [#10913](https://github.com/appwrite/appwrite/pull/10913) +* Refactor make Bus dispatch synchronous in [#11449](https://github.com/appwrite/appwrite/pull/11449) +* Remove proxy container in [#11039](https://github.com/appwrite/appwrite/pull/11039) + +### Performance + +* Optimize updateDocument() calls to use sparse documents in [#11465](https://github.com/appwrite/appwrite/pull/11465) +* Optimize Dockerfile in [#10947](https://github.com/appwrite/appwrite/pull/10947) +* Improve domain caching in [#11346](https://github.com/appwrite/appwrite/pull/11346) +* Improve memory usage in [#11345](https://github.com/appwrite/appwrite/pull/11345) +* Fix memory leak in [#11067](https://github.com/appwrite/appwrite/pull/11067) and [#11241](https://github.com/appwrite/appwrite/pull/11241) +* Improve realtime performance in [#11251](https://github.com/appwrite/appwrite/pull/11251) +* Enable SMTP keep-alive to reuse connections across mail jobs in [#11496](https://github.com/appwrite/appwrite/pull/11496) ### Fixes -* Fix duplicate document error while creating file in [#10891](https://github.com/appwrite/appwrite/pull/10891) -* Fix "Update external deployment (authorize)" throwing 500 error due to invalid query in [#10888](https://github.com/appwrite/appwrite/pull/10888) -* Fix error setting user password in [#10889](https://github.com/appwrite/appwrite/pull/10889) -* Fix error generating email MFA challenges in [#10884](https://github.com/appwrite/appwrite/pull/10884) -* Fix file token expiry in [#10877](https://github.com/appwrite/appwrite/pull/10877) -* Fix TanStack Nitro default in [#10860](https://github.com/appwrite/appwrite/pull/10860) -* Fix TanStack builds in [#10767](https://github.com/appwrite/appwrite/pull/10767) -* Fix nullable validation in [#10819](https://github.com/appwrite/appwrite/pull/10819) and [#10778](https://github.com/appwrite/appwrite/pull/10778) -* Fix WebP library in [#10738](https://github.com/appwrite/appwrite/pull/10738) -* Fix batch writes in [#10812](https://github.com/appwrite/appwrite/pull/10812) -* Fix error handler error in [#10719](https://github.com/appwrite/appwrite/pull/10719) -* Fix Next 16 compatibility in [#10713](https://github.com/appwrite/appwrite/pull/10713) -* Fix stats usage memory leak in [#10683](https://github.com/appwrite/appwrite/pull/10683) -* Fix author URL in template deployments in [#10535](https://github.com/appwrite/appwrite/pull/10535) -* Fix VCS lock deletion in [#10691](https://github.com/appwrite/appwrite/pull/10691) +* Fix blocked user/resource errors from 401 to 403 in [#11469](https://github.com/appwrite/appwrite/pull/11469) +* Fix OAuth for custom domains in [#10967](https://github.com/appwrite/appwrite/pull/10967) and [#11269](https://github.com/appwrite/appwrite/pull/11269) +* Fix OAuth redirect custom scheme in [#11292](https://github.com/appwrite/appwrite/pull/11292) +* Fix OAuth verified emails in [#10986](https://github.com/appwrite/appwrite/pull/10986) +* Fix MFA recovery code validation in [#10925](https://github.com/appwrite/appwrite/pull/10925) +* Fix users allow updating phone number to empty in [#11521](https://github.com/appwrite/appwrite/pull/11521) +* Fix users optional name error in [#11413](https://github.com/appwrite/appwrite/pull/11413) +* Fix file permissions in [#11026](https://github.com/appwrite/appwrite/pull/11026) +* Fix bulk insert webhook validation in [#11022](https://github.com/appwrite/appwrite/pull/11022) +* Fix execution status update in [#11134](https://github.com/appwrite/appwrite/pull/11134) +* Fix execution timeout status in [#11400](https://github.com/appwrite/appwrite/pull/11400) +* Fix CORS wildcard in [#10956](https://github.com/appwrite/appwrite/pull/10956) +* Fix preflight requests in [#10943](https://github.com/appwrite/appwrite/pull/10943) +* Fix SMTP auth check in [#10939](https://github.com/appwrite/appwrite/pull/10939) +* Fix scheduled executions trigger in [#10922](https://github.com/appwrite/appwrite/pull/10922) +* Fix schedule executions bug in [#10916](https://github.com/appwrite/appwrite/pull/10916) +* Fix deployment enum missing canceled value in [#11179](https://github.com/appwrite/appwrite/pull/11179) +* Fix invalid chunk total in [#11270](https://github.com/appwrite/appwrite/pull/11270) +* Fix sites domains in [#11240](https://github.com/appwrite/appwrite/pull/11240) and [#11355](https://github.com/appwrite/appwrite/pull/11355) +* Fix rule domains in [#11355](https://github.com/appwrite/appwrite/pull/11355) and [#11276](https://github.com/appwrite/appwrite/pull/11276) +* Fix rules deletion in [#11575](https://github.com/appwrite/appwrite/pull/11575) +* Fix VCS template flow in [#11275](https://github.com/appwrite/appwrite/pull/11275) +* Fix VCS comment empty in [#11490](https://github.com/appwrite/appwrite/pull/11490) +* Fix DSN VCS error in [#11364](https://github.com/appwrite/appwrite/pull/11364) +* Fix email URL params encoding in [#11369](https://github.com/appwrite/appwrite/pull/11369) +* Fix missing email warning in [#11378](https://github.com/appwrite/appwrite/pull/11378) +* Fix race condition in builds worker in [#11336](https://github.com/appwrite/appwrite/pull/11336) +* Fix realtime regions in [#11414](https://github.com/appwrite/appwrite/pull/11414) +* Fix realtime errors in [#11573](https://github.com/appwrite/appwrite/pull/11573) +* Fix realtime TablesDB channels in [#11404](https://github.com/appwrite/appwrite/pull/11404) and [#11430](https://github.com/appwrite/appwrite/pull/11430) +* Fix database shared table reconciliation in [#11578](https://github.com/appwrite/appwrite/pull/11578) +* Fix PostgreSQL race condition in shared mode project creation in [#11536](https://github.com/appwrite/appwrite/pull/11536) +* Fix compression enabled env in [#11171](https://github.com/appwrite/appwrite/pull/11171) +* Fix deletes bug in [#10965](https://github.com/appwrite/appwrite/pull/10965) +* Fix devkey scopes in [#10984](https://github.com/appwrite/appwrite/pull/10984) +* Fix phone auth limit in [#11143](https://github.com/appwrite/appwrite/pull/11143) +* Fix relationship document ID validation in [#11193](https://github.com/appwrite/appwrite/pull/11193) +* Fix stale project overwrites OAuth in [#11461](https://github.com/appwrite/appwrite/pull/11461) +* Fix storage health error swallowing in [#11492](https://github.com/appwrite/appwrite/pull/11492) +* Fix Origin validator type error in [#11297](https://github.com/appwrite/appwrite/pull/11297) +* Fix getScreenshot image format in [#11017](https://github.com/appwrite/appwrite/pull/11017) +* Fix migration error handling in [#11457](https://github.com/appwrite/appwrite/pull/11457) +* Fix deprecation warnings in [#11227](https://github.com/appwrite/appwrite/pull/11227) + +### Installer + +* New installer UI in [#11175](https://github.com/appwrite/appwrite/pull/11175) and [#11247](https://github.com/appwrite/appwrite/pull/11247) ### Miscellaneous -* Add CSV export functionality in [#10546](https://github.com/appwrite/appwrite/pull/10546), [#10750](https://github.com/appwrite/appwrite/pull/10750), [#10813](https://github.com/appwrite/appwrite/pull/10813), and [#10847](https://github.com/appwrite/appwrite/pull/10847) -* Add JWT disposition in [#10867](https://github.com/appwrite/appwrite/pull/10867) -* Add screenshots endpoint in [#10675](https://github.com/appwrite/appwrite/pull/10675) -* Add screenshot endpoint stats in [#10706](https://github.com/appwrite/appwrite/pull/10706) -* Add users attributes in [#10688](https://github.com/appwrite/appwrite/pull/10688) -* Add max build duration environment variable in [#10674](https://github.com/appwrite/appwrite/pull/10674) -* Add custom realtime logger in [#10871](https://github.com/appwrite/appwrite/pull/10871) -* Add logs in [#10869](https://github.com/appwrite/appwrite/pull/10869) -* Improve MFA docs endpoint order in [#10793](https://github.com/appwrite/appwrite/pull/10793) -* Auth refactor in [#10758](https://github.com/appwrite/appwrite/pull/10758), [#10837](https://github.com/appwrite/appwrite/pull/10837), [#10682](https://github.com/appwrite/appwrite/pull/10682), and [#10667](https://github.com/appwrite/appwrite/pull/10667) -* Bump assistant to 0.8.4 in [#10887](https://github.com/appwrite/appwrite/pull/10887) -* Bump database to 3.1.5 in [#10766](https://github.com/appwrite/appwrite/pull/10766) -* Bump Utopia DNS in [#10761](https://github.com/appwrite/appwrite/pull/10761) -* Update domains to 0.8.3 in [#10658](https://github.com/appwrite/appwrite/pull/10658) -* Update domains to 0.9.1 in [#10678](https://github.com/appwrite/appwrite/pull/10678) -* Update Apple Swift to 13.3.0 in [#10679](https://github.com/appwrite/appwrite/pull/10679) -* Update Apple Swift in [#10663](https://github.com/appwrite/appwrite/pull/10663) -* Update CLI to 10.2.2 in [#10672](https://github.com/appwrite/appwrite/pull/10672) -* Update to CLI 12.0.0 in [#10853](https://github.com/appwrite/appwrite/pull/10853) -* Update docs examples to use Permission class in [#10707](https://github.com/appwrite/appwrite/pull/10707) -* Update SDK examples docs in [#10855](https://github.com/appwrite/appwrite/pull/10855) -* Release Python SDK in [#10762](https://github.com/appwrite/appwrite/pull/10762) -* Release Flutter 20.3.2 in [#10838](https://github.com/appwrite/appwrite/pull/10838) -* Release Flutter/Dart add screenshot examples in [#10811](https://github.com/appwrite/appwrite/pull/10811) -* Release PHP CLI in [#10791](https://github.com/appwrite/appwrite/pull/10791) -* Release SDKs in [#10817](https://github.com/appwrite/appwrite/pull/10817) -* Update SDKs in [#10694](https://github.com/appwrite/appwrite/pull/10694), [#10729](https://github.com/appwrite/appwrite/pull/10729), and [#10744](https://github.com/appwrite/appwrite/pull/10744) -* Update SDK generator in [#10743](https://github.com/appwrite/appwrite/pull/10743) -* Update database in [#10664](https://github.com/appwrite/appwrite/pull/10664) -* Update README file in [#10763](https://github.com/appwrite/appwrite/pull/10763) -* SDK release documentation in [#10745](https://github.com/appwrite/appwrite/pull/10745) -* SDK release runtime config in [#10765](https://github.com/appwrite/appwrite/pull/10765) -* Sync specs in [#10789](https://github.com/appwrite/appwrite/pull/10789) -* Sync 1.8.0 in [#10677](https://github.com/appwrite/appwrite/pull/10677) -* Add workflow for issue triage in [#10718](https://github.com/appwrite/appwrite/pull/10718) -* Add issue auto-labeler in [#10700](https://github.com/appwrite/appwrite/pull/10700) -* Add AI moderator repo in [#10717](https://github.com/appwrite/appwrite/pull/10717) -* Browser bump in [#10850](https://github.com/appwrite/appwrite/pull/10850) -* Template type enum override in [#10848](https://github.com/appwrite/appwrite/pull/10848) -* VCS reference type in [#10852](https://github.com/appwrite/appwrite/pull/10852) -* Index scope description in [#10851](https://github.com/appwrite/appwrite/pull/10851) -* Config for environment in [#10833](https://github.com/appwrite/appwrite/pull/10833) -* Format instance in [#10830](https://github.com/appwrite/appwrite/pull/10830) -* Replace sleep in webhooks service in [#10656](https://github.com/appwrite/appwrite/pull/10656) -* Update email composer in [#10720](https://github.com/appwrite/appwrite/pull/10720) -* Update facts on GitHub sites and functions in [#10593](https://github.com/appwrite/appwrite/pull/10593) and [#10771](https://github.com/appwrite/appwrite/pull/10771) -* Fix wrong user type in [#10875](https://github.com/appwrite/appwrite/pull/10875) -* Fix limit and offset computation in [#10880](https://github.com/appwrite/appwrite/pull/10880) -* Fix enum examples in [#10828](https://github.com/appwrite/appwrite/pull/10828) -* Fix response models multi-methods in [#10815](https://github.com/appwrite/appwrite/pull/10815) -* Fix undefined variable in [#10654](https://github.com/appwrite/appwrite/pull/10654) -* Fix undefined sequence in [#10652](https://github.com/appwrite/appwrite/pull/10652) -* Fix description in [#10702](https://github.com/appwrite/appwrite/pull/10702) -* Fix warning in builds worker in [#10705](https://github.com/appwrite/appwrite/pull/10705) -* Fix sites create deployment docs in [#10566](https://github.com/appwrite/appwrite/pull/10566) -* Fix test dependencies projects in [#10655](https://github.com/appwrite/appwrite/pull/10655) -* Fix list sites test in [#10726](https://github.com/appwrite/appwrite/pull/10726) +* Add audits upgrade in [#10953](https://github.com/appwrite/appwrite/pull/10953) +* Add graceful workers shutdown in [#11104](https://github.com/appwrite/appwrite/pull/11104) +* Add pool resilience in [#11139](https://github.com/appwrite/appwrite/pull/11139) +* Add function queue job TTL in [#11226](https://github.com/appwrite/appwrite/pull/11226) +* Add cleanup stale executions in [#11146](https://github.com/appwrite/appwrite/pull/11146) +* Add success abuse reset in [#11085](https://github.com/appwrite/appwrite/pull/11085) +* Add SMTP connection validation in [#11079](https://github.com/appwrite/appwrite/pull/11079) +* Add allow custom email sender in [#10945](https://github.com/appwrite/appwrite/pull/10945) +* Add array domains env support in [#11213](https://github.com/appwrite/appwrite/pull/11213) +* Add file create after success hook in [#11054](https://github.com/appwrite/appwrite/pull/11054) +* Add delete subscribers in [#11115](https://github.com/appwrite/appwrite/pull/11115) +* Add cursor plugin in [#11371](https://github.com/appwrite/appwrite/pull/11371) +* Add observability spans in [#11320](https://github.com/appwrite/appwrite/pull/11320), [#11306](https://github.com/appwrite/appwrite/pull/11306), and [#11228](https://github.com/appwrite/appwrite/pull/11228) +* Upgrade PHPStan to v2 with full codebase coverage in [#11550](https://github.com/appwrite/appwrite/pull/11550) +* Upgrade Traefik in [#11265](https://github.com/appwrite/appwrite/pull/11265) +* Upgrade utopia-php/queue in [#11239](https://github.com/appwrite/appwrite/pull/11239) +* Upgrade spomky-labs/otphp in [#11263](https://github.com/appwrite/appwrite/pull/11263) +* Bump utopia-php/database to stable 5.3.15 in [#11573](https://github.com/appwrite/appwrite/pull/11573) +* Bump utopia-php/migration to 1.6.3 in [#11443](https://github.com/appwrite/appwrite/pull/11443) +* Consolidate CI workflows in [#11531](https://github.com/appwrite/appwrite/pull/11531) and [#11551](https://github.com/appwrite/appwrite/pull/11551) +* Hide deprecated methods from docs in [#10933](https://github.com/appwrite/appwrite/pull/10933) +* Deprecate project-level attributes in [#11203](https://github.com/appwrite/appwrite/pull/11203) # Version 1.8.0 diff --git a/Dockerfile b/Dockerfile index 210c2bc3d9..7cb007c188 100755 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ RUN composer install --ignore-platform-reqs --optimize-autoloader \ --no-plugins --no-scripts --prefer-dist \ `if [ "$TESTING" != "true" ]; then echo "--no-dev"; fi` -FROM appwrite/base:1.0.0 AS base +FROM appwrite/base:1.0.1 AS base LABEL maintainer="team@appwrite.io" @@ -121,5 +121,6 @@ RUN if [ "$DEBUG" = "true" ]; then \ fi EXPOSE 80 +EXPOSE 8080 CMD [ "php", "app/http.php" ] diff --git a/README-CN.md b/README-CN.md index afd7eca289..212b5bb08d 100644 --- a/README-CN.md +++ b/README-CN.md @@ -72,7 +72,7 @@ docker run -it --rm \ --volume /var/run/docker.sock:/var/run/docker.sock \ --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \ --entrypoint="install" \ - appwrite/appwrite:1.8.1 + appwrite/appwrite:1.9.0 ``` ### Windows @@ -84,7 +84,7 @@ docker run -it --rm ^ --volume //var/run/docker.sock:/var/run/docker.sock ^ --volume "%cd%"/appwrite:/usr/src/code/appwrite:rw ^ --entrypoint="install" ^ - appwrite/appwrite:1.8.1 + appwrite/appwrite:1.9.0 ``` #### PowerShell @@ -94,7 +94,7 @@ docker run -it --rm ` --volume /var/run/docker.sock:/var/run/docker.sock ` --volume ${pwd}/appwrite:/usr/src/code/appwrite:rw ` --entrypoint="install" ` - appwrite/appwrite:1.8.1 + appwrite/appwrite:1.9.0 ``` 运行后,可以在浏览器上访问 http://localhost 找到 Appwrite 控制台。在非 Linux 的本机主机上完成安装后,服务器可能需要几分钟才能启动。 diff --git a/README.md b/README.md index 4a71579207..457863d236 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ docker run -it --rm \ --volume /var/run/docker.sock:/var/run/docker.sock \ --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \ --entrypoint="install" \ - appwrite/appwrite:1.8.1 + appwrite/appwrite:1.9.0 ``` ### Windows @@ -87,7 +87,7 @@ docker run -it --rm ^ --volume //var/run/docker.sock:/var/run/docker.sock ^ --volume "%cd%"/appwrite:/usr/src/code/appwrite:rw ^ --entrypoint="install" ^ - appwrite/appwrite:1.8.1 + appwrite/appwrite:1.9.0 ``` #### PowerShell @@ -97,7 +97,7 @@ docker run -it --rm ` --volume /var/run/docker.sock:/var/run/docker.sock ` --volume ${pwd}/appwrite:/usr/src/code/appwrite:rw ` --entrypoint="install" ` - appwrite/appwrite:1.8.1 + appwrite/appwrite:1.9.0 ``` Once the Docker installation is complete, go to http://localhost to access the Appwrite console from your browser. Please note that on non-Linux native hosts, the server might take a few minutes to start after completing the installation. diff --git a/app/cli.php b/app/cli.php index ee134b9487..b8721320be 100644 --- a/app/cli.php +++ b/app/cli.php @@ -167,7 +167,7 @@ $setResource('getProjectDB', function (Group $pools, Database $dbForPlatform, $c if (\in_array($dsn->getHost(), $sharedTables)) { $database ->setSharedTables(true) - ->setTenant((int) $project->getSequence()) + ->setTenant($project->getSequence()) ->setNamespace($dsn->getParam('namespace')); } else { $database @@ -188,7 +188,7 @@ $setResource('getProjectDB', function (Group $pools, Database $dbForPlatform, $c if (\in_array($dsn->getHost(), $sharedTables)) { $database ->setSharedTables(true) - ->setTenant((int) $project->getSequence()) + ->setTenant($project->getSequence()) ->setNamespace($dsn->getParam('namespace')); } else { $database @@ -211,9 +211,8 @@ $setResource('getLogsDB', function (Group $pools, Cache $cache, Authorization $a $database = null; return function (?Document $project = null) use ($pools, $cache, $database, $authorization) { - if ($database !== null && $project !== null && ! $project->isEmpty() && $project->getId() !== 'console') { - $database->setTenant((int) $project->getSequence()); - + if ($database !== null && $project !== null && !$project->isEmpty() && $project->getId() !== 'console') { + $database->setTenant($project->getSequence()); return $database; } @@ -229,8 +228,8 @@ $setResource('getLogsDB', function (Group $pools, Cache $cache, Authorization $a ->setMaxQueryValues(APP_DATABASE_QUERY_MAX_VALUES); // set tenant - if ($project !== null && ! $project->isEmpty() && $project->getId() !== 'console') { - $database->setTenant((int) $project->getSequence()); + if ($project !== null && !$project->isEmpty() && $project->getId() !== 'console') { + $database->setTenant($project->getSequence()); } return $database; diff --git a/app/config/errors.php b/app/config/errors.php index 391975cb34..f29368ec6e 100644 --- a/app/config/errors.php +++ b/app/config/errors.php @@ -1159,6 +1159,11 @@ return [ 'description' => 'Webhook with the requested ID could not be found.', 'code' => 404, ], + Exception::WEBHOOK_ALREADY_EXISTS => [ + 'name' => Exception::WEBHOOK_ALREADY_EXISTS, + 'description' => 'Webhook with the same ID already exists. Try again with a different ID.', + 'code' => 409, + ], Exception::KEY_NOT_FOUND => [ 'name' => Exception::KEY_NOT_FOUND, 'description' => 'Key with the requested ID could not be found.', diff --git a/app/config/scopes/project.php b/app/config/scopes/project.php index 0a3feba9e7..1f318b0376 100644 --- a/app/config/scopes/project.php +++ b/app/config/scopes/project.php @@ -172,4 +172,12 @@ return [ // List of publicly visible scopes 'tokens.write' => [ 'description' => 'Access to create, update, and delete your project\'s tokens', ], + "webhooks.read" => [ + "description" => + "Access to read project\'s webhooks", + ], + "webhooks.write" => [ + "description" => + "Access to create, update, and delete project\'s webhooks", + ], ]; diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 2270ff1246..bb3c162dcb 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -4,7 +4,6 @@ use Ahc\Jwt\JWT; use Appwrite\Auth\Validator\MockNumber; use Appwrite\Event\Delete; use Appwrite\Event\Mail; -use Appwrite\Event\Validator\Event; use Appwrite\Extend\Exception; use Appwrite\Network\Platform; use Appwrite\SDK\AuthType; @@ -38,11 +37,9 @@ use Utopia\Validator\ArrayList; use Utopia\Validator\Boolean; use Utopia\Validator\Hostname; use Utopia\Validator\Integer; -use Utopia\Validator\Multiple; use Utopia\Validator\Nullable; use Utopia\Validator\Range; use Utopia\Validator\Text; -use Utopia\Validator\URL; use Utopia\Validator\WhiteList; Http::init() @@ -773,312 +770,6 @@ Http::delete('/v1/projects/:projectId') $response->noContent(); }); -// Webhooks - -Http::post('/v1/projects/:projectId/webhooks') - ->desc('Create webhook') - ->groups(['api', 'projects']) - ->label('scope', 'projects.write') - ->label('sdk', new Method( - namespace: 'projects', - group: 'webhooks', - name: 'createWebhook', - description: '/docs/references/projects/create-webhook.md', - auth: [AuthType::ADMIN], - responses: [ - new SDKResponse( - code: Response::STATUS_CODE_CREATED, - model: Response::MODEL_WEBHOOK, - ) - ] - )) - ->param('projectId', '', fn (Database $dbForPlatform) => new UID($dbForPlatform->getAdapter()->getMaxUIDLength()), 'Project unique ID.', false, ['dbForPlatform']) - ->param('name', null, new Text(128), 'Webhook name. Max length: 128 chars.') - ->param('enabled', true, new Boolean(true), 'Enable or disable a webhook.', true) - ->param('events', null, new ArrayList(new Event(), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Events list. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' events are allowed.') - ->param('url', '', fn ($request) => new Multiple([new URL(['http', 'https']), new PublicDomain()], Multiple::TYPE_STRING), 'Webhook URL.', false, ['request']) - ->param('security', false, new Boolean(true), 'Certificate verification, false for disabled or true for enabled.') - ->param('httpUser', '', new Text(256), 'Webhook HTTP user. Max length: 256 chars.', true) - ->param('httpPass', '', new Text(256), 'Webhook HTTP password. Max length: 256 chars.', true) - ->inject('response') - ->inject('dbForPlatform') - ->action(function (string $projectId, string $name, bool $enabled, array $events, string $url, bool $security, string $httpUser, string $httpPass, Response $response, Database $dbForPlatform) { - - $project = $dbForPlatform->getDocument('projects', $projectId); - - if ($project->isEmpty()) { - throw new Exception(Exception::PROJECT_NOT_FOUND); - } - - $security = (bool) filter_var($security, FILTER_VALIDATE_BOOLEAN); - - $webhook = new Document([ - '$id' => ID::unique(), - '$permissions' => [ - Permission::read(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - 'projectInternalId' => $project->getSequence(), - 'projectId' => $project->getId(), - 'name' => $name, - 'events' => $events, - 'url' => $url, - 'security' => $security, - 'httpUser' => $httpUser, - 'httpPass' => $httpPass, - 'signatureKey' => \bin2hex(\random_bytes(64)), - 'enabled' => $enabled, - ]); - - $webhook = $dbForPlatform->createDocument('webhooks', $webhook); - - $dbForPlatform->purgeCachedDocument('projects', $project->getId()); - - $response - ->setStatusCode(Response::STATUS_CODE_CREATED) - ->dynamic($webhook, Response::MODEL_WEBHOOK); - }); - -Http::get('/v1/projects/:projectId/webhooks') - ->desc('List webhooks') - ->groups(['api', 'projects']) - ->label('scope', 'projects.read') - ->label('sdk', new Method( - namespace: 'projects', - group: 'webhooks', - name: 'listWebhooks', - description: '/docs/references/projects/list-webhooks.md', - auth: [AuthType::ADMIN], - responses: [ - new SDKResponse( - code: Response::STATUS_CODE_OK, - model: Response::MODEL_WEBHOOK_LIST, - ) - ] - )) - ->param('projectId', '', fn (Database $dbForPlatform) => new UID($dbForPlatform->getAdapter()->getMaxUIDLength()), 'Project unique ID.', false, ['dbForPlatform']) - ->param('total', true, new Boolean(true), 'When set to false, the total count returned will be 0 and will not be calculated.', true) - ->inject('response') - ->inject('dbForPlatform') - ->action(function (string $projectId, bool $includeTotal, Response $response, Database $dbForPlatform) { - - $project = $dbForPlatform->getDocument('projects', $projectId); - - if ($project->isEmpty()) { - throw new Exception(Exception::PROJECT_NOT_FOUND); - } - - $webhooks = $dbForPlatform->find('webhooks', [ - Query::equal('projectInternalId', [$project->getSequence()]), - Query::limit(5000), - ]); - - $response->dynamic(new Document([ - 'webhooks' => $webhooks, - 'total' => $includeTotal ? count($webhooks) : 0, - ]), Response::MODEL_WEBHOOK_LIST); - }); - -Http::get('/v1/projects/:projectId/webhooks/:webhookId') - ->desc('Get webhook') - ->groups(['api', 'projects']) - ->label('scope', 'projects.read') - ->label('sdk', new Method( - namespace: 'projects', - group: 'webhooks', - name: 'getWebhook', - description: '/docs/references/projects/get-webhook.md', - auth: [AuthType::ADMIN], - responses: [ - new SDKResponse( - code: Response::STATUS_CODE_OK, - model: Response::MODEL_WEBHOOK, - ) - ] - )) - ->param('projectId', '', fn (Database $dbForPlatform) => new UID($dbForPlatform->getAdapter()->getMaxUIDLength()), 'Project unique ID.', false, ['dbForPlatform']) - ->param('webhookId', '', fn (Database $dbForPlatform) => new UID($dbForPlatform->getAdapter()->getMaxUIDLength()), 'Webhook unique ID.', false, ['dbForPlatform']) - ->inject('response') - ->inject('dbForPlatform') - ->action(function (string $projectId, string $webhookId, Response $response, Database $dbForPlatform) { - - $project = $dbForPlatform->getDocument('projects', $projectId); - - if ($project->isEmpty()) { - throw new Exception(Exception::PROJECT_NOT_FOUND); - } - - $webhook = $dbForPlatform->findOne('webhooks', [ - Query::equal('$id', [$webhookId]), - Query::equal('projectInternalId', [$project->getSequence()]), - ]); - - if ($webhook->isEmpty()) { - throw new Exception(Exception::WEBHOOK_NOT_FOUND); - } - - $response->dynamic($webhook, Response::MODEL_WEBHOOK); - }); - -Http::put('/v1/projects/:projectId/webhooks/:webhookId') - ->desc('Update webhook') - ->groups(['api', 'projects']) - ->label('scope', 'projects.write') - ->label('sdk', new Method( - namespace: 'projects', - group: 'webhooks', - name: 'updateWebhook', - description: '/docs/references/projects/update-webhook.md', - auth: [AuthType::ADMIN], - responses: [ - new SDKResponse( - code: Response::STATUS_CODE_OK, - model: Response::MODEL_WEBHOOK, - ) - ] - )) - ->param('projectId', '', fn (Database $dbForPlatform) => new UID($dbForPlatform->getAdapter()->getMaxUIDLength()), 'Project unique ID.', false, ['dbForPlatform']) - ->param('webhookId', '', fn (Database $dbForPlatform) => new UID($dbForPlatform->getAdapter()->getMaxUIDLength()), 'Webhook unique ID.', false, ['dbForPlatform']) - ->param('name', null, new Text(128), 'Webhook name. Max length: 128 chars.') - ->param('enabled', true, new Boolean(true), 'Enable or disable a webhook.', true) - ->param('events', null, new ArrayList(new Event(), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Events list. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' events are allowed.') - ->param('url', '', fn ($request) => new Multiple([new URL(['http', 'https']), new PublicDomain()], Multiple::TYPE_STRING), 'Webhook URL.', false, ['request']) - ->param('security', false, new Boolean(true), 'Certificate verification, false for disabled or true for enabled.') - ->param('httpUser', '', new Text(256), 'Webhook HTTP user. Max length: 256 chars.', true) - ->param('httpPass', '', new Text(256), 'Webhook HTTP password. Max length: 256 chars.', true) - ->inject('response') - ->inject('dbForPlatform') - ->action(function (string $projectId, string $webhookId, string $name, bool $enabled, array $events, string $url, bool $security, string $httpUser, string $httpPass, Response $response, Database $dbForPlatform) { - - $project = $dbForPlatform->getDocument('projects', $projectId); - - if ($project->isEmpty()) { - throw new Exception(Exception::PROJECT_NOT_FOUND); - } - - $security = ($security === '1' || $security === 'true' || $security === 1 || $security === true); - - $webhook = $dbForPlatform->findOne('webhooks', [ - Query::equal('$id', [$webhookId]), - Query::equal('projectInternalId', [$project->getSequence()]), - ]); - - if ($webhook->isEmpty()) { - throw new Exception(Exception::WEBHOOK_NOT_FOUND); - } - - $webhook - ->setAttribute('name', $name) - ->setAttribute('events', $events) - ->setAttribute('url', $url) - ->setAttribute('security', $security) - ->setAttribute('httpUser', $httpUser) - ->setAttribute('httpPass', $httpPass) - ->setAttribute('enabled', $enabled); - - if ($enabled) { - $webhook->setAttribute('attempts', 0); - } - - $dbForPlatform->updateDocument('webhooks', $webhook->getId(), $webhook); - $dbForPlatform->purgeCachedDocument('projects', $project->getId()); - - $response->dynamic($webhook, Response::MODEL_WEBHOOK); - }); - -Http::patch('/v1/projects/:projectId/webhooks/:webhookId/signature') - ->desc('Update webhook signature key') - ->groups(['api', 'projects']) - ->label('scope', 'projects.write') - ->label('sdk', new Method( - namespace: 'projects', - group: 'webhooks', - name: 'updateWebhookSignature', - description: '/docs/references/projects/update-webhook-signature.md', - auth: [AuthType::ADMIN], - responses: [ - new SDKResponse( - code: Response::STATUS_CODE_OK, - model: Response::MODEL_WEBHOOK, - ) - ] - )) - ->param('projectId', '', fn (Database $dbForPlatform) => new UID($dbForPlatform->getAdapter()->getMaxUIDLength()), 'Project unique ID.', false, ['dbForPlatform']) - ->param('webhookId', '', fn (Database $dbForPlatform) => new UID($dbForPlatform->getAdapter()->getMaxUIDLength()), 'Webhook unique ID.', false, ['dbForPlatform']) - ->inject('response') - ->inject('dbForPlatform') - ->action(function (string $projectId, string $webhookId, Response $response, Database $dbForPlatform) { - - $project = $dbForPlatform->getDocument('projects', $projectId); - - if ($project->isEmpty()) { - throw new Exception(Exception::PROJECT_NOT_FOUND); - } - - $webhook = $dbForPlatform->findOne('webhooks', [ - Query::equal('$id', [$webhookId]), - Query::equal('projectInternalId', [$project->getSequence()]), - ]); - - if ($webhook->isEmpty()) { - throw new Exception(Exception::WEBHOOK_NOT_FOUND); - } - - $webhook->setAttribute('signatureKey', \bin2hex(\random_bytes(64))); - - $dbForPlatform->updateDocument('webhooks', $webhook->getId(), $webhook); - $dbForPlatform->purgeCachedDocument('projects', $project->getId()); - - $response->dynamic($webhook, Response::MODEL_WEBHOOK); - }); - -Http::delete('/v1/projects/:projectId/webhooks/:webhookId') - ->desc('Delete webhook') - ->groups(['api', 'projects']) - ->label('scope', 'projects.write') - ->label('sdk', new Method( - namespace: 'projects', - group: 'webhooks', - name: 'deleteWebhook', - description: '/docs/references/projects/delete-webhook.md', - auth: [AuthType::ADMIN], - responses: [ - new SDKResponse( - code: Response::STATUS_CODE_NOCONTENT, - model: Response::MODEL_NONE, - ) - ], - contentType: ContentType::NONE - )) - ->param('projectId', '', fn (Database $dbForPlatform) => new UID($dbForPlatform->getAdapter()->getMaxUIDLength()), 'Project unique ID.', false, ['dbForPlatform']) - ->param('webhookId', '', fn (Database $dbForPlatform) => new UID($dbForPlatform->getAdapter()->getMaxUIDLength()), 'Webhook unique ID.', false, ['dbForPlatform']) - ->inject('response') - ->inject('dbForPlatform') - ->action(function (string $projectId, string $webhookId, Response $response, Database $dbForPlatform) { - - $project = $dbForPlatform->getDocument('projects', $projectId); - - if ($project->isEmpty()) { - throw new Exception(Exception::PROJECT_NOT_FOUND); - } - - $webhook = $dbForPlatform->findOne('webhooks', [ - Query::equal('$id', [$webhookId]), - Query::equal('projectInternalId', [$project->getSequence()]), - ]); - - if ($webhook->isEmpty()) { - throw new Exception(Exception::WEBHOOK_NOT_FOUND); - } - - $dbForPlatform->deleteDocument('webhooks', $webhook->getId()); - - $dbForPlatform->purgeCachedDocument('projects', $project->getId()); - - $response->noContent(); - }); - // Keys Http::post('/v1/projects/:projectId/keys') diff --git a/app/controllers/general.php b/app/controllers/general.php index f77aa3ec52..1a099c4bde 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -555,7 +555,7 @@ function router(Http $utopia, Database $dbForPlatform, callable $getProjectDB, S } if (!empty($deployment->getAttribute('startCommand', ''))) { - $startCommand = 'cd /usr/local/server/src/function/ && ' . $deployment->getAttribute('startCommand', ''); + $startCommand = 'cd /usr/local/server/src/function/ && ' . str_replace(['"', '`', '$'], ['\\"', '\\`', '\\$'], $deployment->getAttribute('startCommand', '')); } $runtimeEntrypoint = match ($version) { diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index c8824d3708..acc9c2dc9a 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -215,7 +215,7 @@ Http::init() ); } - if (! $dbKey) { + if (!$dbKey) { throw new Exception(Exception::USER_UNAUTHORIZED); } diff --git a/app/init/constants.php b/app/init/constants.php index 7a484c7f4e..c578bdbf9a 100644 --- a/app/init/constants.php +++ b/app/init/constants.php @@ -47,7 +47,7 @@ const APP_RESOURCE_TOKEN_ACCESS = 24 * 60 * 60; // 24 hours const APP_FILE_ACCESS = 24 * 60 * 60; // 24 hours const APP_CACHE_UPDATE = 24 * 60 * 60; // 24 hours const APP_CACHE_BUSTER = 4321; -const APP_VERSION_STABLE = '1.8.1'; +const APP_VERSION_STABLE = '1.9.0'; const APP_DATABASE_ATTRIBUTE_EMAIL = 'email'; const APP_DATABASE_ATTRIBUTE_ENUM = 'enum'; const APP_DATABASE_ATTRIBUTE_IP = 'ip'; diff --git a/app/init/models.php b/app/init/models.php index d432852660..6c90f08199 100644 --- a/app/init/models.php +++ b/app/init/models.php @@ -185,7 +185,7 @@ Response::setModel(new BaseList('Runtimes List', Response::MODEL_RUNTIME_LIST, ' Response::setModel(new BaseList('Deployments List', Response::MODEL_DEPLOYMENT_LIST, 'deployments', Response::MODEL_DEPLOYMENT)); Response::setModel(new BaseList('Executions List', Response::MODEL_EXECUTION_LIST, 'executions', Response::MODEL_EXECUTION)); Response::setModel(new BaseList('Projects List', Response::MODEL_PROJECT_LIST, 'projects', Response::MODEL_PROJECT, true, false)); -Response::setModel(new BaseList('Webhooks List', Response::MODEL_WEBHOOK_LIST, 'webhooks', Response::MODEL_WEBHOOK, true, false)); +Response::setModel(new BaseList('Webhooks List', Response::MODEL_WEBHOOK_LIST, 'webhooks', Response::MODEL_WEBHOOK, true, true)); Response::setModel(new BaseList('API Keys List', Response::MODEL_KEY_LIST, 'keys', Response::MODEL_KEY, true, true)); Response::setModel(new BaseList('Dev Keys List', Response::MODEL_DEV_KEY_LIST, 'devKeys', Response::MODEL_DEV_KEY, true, false)); Response::setModel(new BaseList('Auth Providers List', Response::MODEL_AUTH_PROVIDER_LIST, 'platforms', Response::MODEL_AUTH_PROVIDER, true, false)); diff --git a/app/init/resources.php b/app/init/resources.php index 1bab4491a4..2ed9e88e90 100644 --- a/app/init/resources.php +++ b/app/init/resources.php @@ -476,7 +476,7 @@ Http::setResource('user', function (string $mode, Document $project, Document $c return $user; }, ['mode', 'project', 'console', 'request', 'response', 'dbForProject', 'dbForPlatform', 'store', 'proofForToken', 'authorization']); -Http::setResource('project', function ($dbForPlatform, $request, $console, $authorization) { +Http::setResource('project', function ($dbForPlatform, $request, $console, $authorization, Http $utopia) { /** @var Appwrite\Utopia\Request $request */ /** @var Utopia\Database\Database $dbForPlatform */ /** @var Utopia\Database\Document $console */ @@ -486,6 +486,20 @@ Http::setResource('project', function ($dbForPlatform, $request, $console, $auth $projectId = $request->getHeader('x-appwrite-project', ''); } + // Backwards compatibility for new services, originally project resources + // These endpoints moved from /v1/projects/:projectId/ to /v1/ + // When accessed via the old alias path, extract projectId from the URI + $deprecatedProjectPathPrefix = '/v1/projects/'; + $route = $utopia->match($request); + if (!empty($route)) { + $isDeprecatedAlias = \str_starts_with($request->getURI(), $deprecatedProjectPathPrefix) && + !\str_starts_with($route->getPath(), $deprecatedProjectPathPrefix); + + if ($isDeprecatedAlias) { + $projectId = \explode('/', $request->getURI(), 5)[3] ?? ''; + } + } + if (empty($projectId) || $projectId === 'console') { return $console; } @@ -493,7 +507,7 @@ Http::setResource('project', function ($dbForPlatform, $request, $console, $auth $project = $authorization->skip(fn () => $dbForPlatform->getDocument('projects', $projectId)); return $project; -}, ['dbForPlatform', 'request', 'console', 'authorization']); +}, ['dbForPlatform', 'request', 'console', 'authorization', 'utopia']); Http::setResource('session', function (User $user, Store $store, Token $proofForToken) { if ($user->isEmpty()) { @@ -589,7 +603,7 @@ Http::setResource('dbForProject', function (Group $pools, Database $dbForPlatfor if (\in_array($dsn->getHost(), $sharedTables)) { $database ->setSharedTables(true) - ->setTenant((int) $project->getSequence()) + ->setTenant($project->getSequence()) ->setNamespace($dsn->getParam('namespace')); } else { $database @@ -848,7 +862,7 @@ Http::setResource('getProjectDB', function (Group $pools, Database $dbForPlatfor if (\in_array($dsn->getHost(), $sharedTables)) { $database ->setSharedTables(true) - ->setTenant((int) $project->getSequence()) + ->setTenant($project->getSequence()) ->setNamespace($dsn->getParam('namespace')); } else { $database @@ -878,9 +892,8 @@ Http::setResource('getLogsDB', function (Group $pools, Cache $cache, Authorizati $database = null; return function (?Document $project = null) use ($pools, $cache, $authorization, &$database) { - if ($database !== null && $project !== null && ! $project->isEmpty() && $project->getId() !== 'console') { - $database->setTenant((int) $project->getSequence()); - + if ($database !== null && $project !== null && !$project->isEmpty() && $project->getId() !== 'console') { + $database->setTenant($project->getSequence()); return $database; } @@ -896,8 +909,8 @@ Http::setResource('getLogsDB', function (Group $pools, Cache $cache, Authorizati ->setMaxQueryValues(APP_DATABASE_QUERY_MAX_VALUES); // set tenant - if ($project !== null && ! $project->isEmpty() && $project->getId() !== 'console') { - $database->setTenant((int) $project->getSequence()); + if ($project !== null && !$project->isEmpty() && $project->getId() !== 'console') { + $database->setTenant($project->getSequence()); } return $database; @@ -1073,16 +1086,21 @@ function getDevice(string $root, string $connection = ''): Device } } -Http::setResource('mode', function ($request) { - /** @var Appwrite\Utopia\Request $request */ - +Http::setResource('mode', function (Request $request, Document $project) { /** * Defines the mode for the request: * - 'default' => Requests for Client and Server Side * - 'admin' => Request from the Console on non-console projects */ - return $request->getParam('mode', $request->getHeader('x-appwrite-mode', APP_MODE_DEFAULT)); -}, ['request']); + $mode = $request->getParam('mode', $request->getHeader('x-appwrite-mode', APP_MODE_DEFAULT)); + + $projectId = $request->getParam('project', $request->getHeader('x-appwrite-project', '')); + if (!empty($projectId) && $project->getId() !== $projectId) { + $mode = APP_MODE_ADMIN; + } + + return $mode; +}, ['request', 'project']); Http::setResource('geodb', function ($register) { /** @var Utopia\Registry\Registry $register */ diff --git a/app/realtime.php b/app/realtime.php index 5addb2a78f..d3305ca7f8 100644 --- a/app/realtime.php +++ b/app/realtime.php @@ -50,6 +50,16 @@ require_once __DIR__ . '/init.php'; Runtime::enableCoroutine(SWOOLE_HOOK_ALL); +// Log uncaught exceptions in one line instead of relying on Swoole's full backtrace dump +set_exception_handler(function (\Throwable $e) { + Console::error(sprintf( + 'Realtime uncaught exception: %s in %s:%d', + $e->getMessage(), + $e->getFile(), + $e->getLine() + )); +}); + // Allows overriding if (!function_exists('getConsoleDB')) { function getConsoleDB(): Database @@ -115,7 +125,7 @@ if (!function_exists('getProjectDB')) { if (\in_array($dsn->getHost(), $sharedTables)) { $database ->setSharedTables(true) - ->setTenant((int)$project->getSequence()) + ->setTenant($project->getSequence()) ->setNamespace($dsn->getParam('namespace')); } else { $database @@ -985,15 +995,21 @@ $server->onMessage(function (int $connection, string $message) use ($server, $re }); $server->onClose(function (int $connection) use ($realtime, $stats, $register) { - if (array_key_exists($connection, $realtime->connections)) { - $stats->decr($realtime->connections[$connection]['projectId'], 'connectionsTotal'); - $register->get('telemetry.connectionCounter')->add(-1); + try { + if (array_key_exists($connection, $realtime->connections)) { + $stats->decr($realtime->connections[$connection]['projectId'], 'connectionsTotal'); + $register->get('telemetry.connectionCounter')->add(-1); - $projectId = $realtime->connections[$connection]['projectId']; + $projectId = $realtime->connections[$connection]['projectId']; - triggerStats([ - METRIC_REALTIME_CONNECTIONS => -1, - ], $projectId); + triggerStats([ + METRIC_REALTIME_CONNECTIONS => -1, + ], $projectId); + } + } catch (\Throwable $th) { + // Log only; do not rethrow. If we let this bubble, Swoole dumps full coroutine + // backtraces and unsubscribe() below would never run (connection cleanup would fail). + Console::error('Realtime onClose error: ' . $th->getMessage()); } $realtime->unsubscribe($connection); diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index a62f6f7e8c..0f4df352bd 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -12,8 +12,12 @@ $version = $this->getParam('version', ''); $organization = $this->getParam('organization', ''); $image = $this->getParam('image', ''); $enableAssistant = $this->getParam('enableAssistant', false); -$dbService = $this->getParam('database'); - +$dbService = $this->getParam('database', 'mongodb'); +$allowedDbServices = ['mariadb', 'mongodb', 'postgresql']; +if (!\in_array($dbService, $allowedDbServices, true)) { + $dbService = 'mongodb'; +} +$hostPath = rtrim($this->getParam('hostPath', ''), '/'); ?>services: traefik: image: traefik:3.6 @@ -63,6 +67,9 @@ $dbService = $this->getParam('database'); - traefik.http.routers.appwrite_api_https.service=appwrite_api - traefik.http.routers.appwrite_api_https.tls=true volumes: + + - ":/usr/src/code:rw" + - appwrite-uploads:/storage/uploads:rw - appwrite-imports:/storage/imports:rw - appwrite-cache:/storage/cache:rw @@ -72,8 +79,10 @@ $dbService = $this->getParam('database'); - appwrite-sites:/storage/sites:rw - appwrite-builds:/storage/builds:rw depends_on: - - redis - - + redis: + condition: service_healthy + : + condition: service_healthy # - clamav environment: - _APP_ENV @@ -227,8 +236,10 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - redis - - + redis: + condition: service_healthy + : + condition: service_healthy environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -258,8 +269,10 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - redis - - + redis: + condition: service_healthy + : + condition: service_healthy environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -286,8 +299,10 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - redis - - + redis: + condition: service_healthy + : + condition: service_healthy environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -316,8 +331,10 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - redis - - + redis: + condition: service_healthy + : + condition: service_healthy volumes: - appwrite-uploads:/storage/uploads:rw - appwrite-cache:/storage/cache:rw @@ -381,8 +398,10 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - redis - - + redis: + condition: service_healthy + : + condition: service_healthy environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -409,8 +428,10 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - redis - - + redis: + condition: service_healthy + : + condition: service_healthy volumes: - appwrite-functions:/storage/functions:rw - appwrite-sites:/storage/sites:rw @@ -479,8 +500,10 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - redis - - + redis: + condition: service_healthy + : + condition: service_healthy volumes: - appwrite-config:/storage/config:rw - appwrite-certificates:/storage/certificates:rw @@ -518,9 +541,12 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - redis - - - - openruntimes-executor + redis: + condition: service_healthy + : + condition: service_healthy + openruntimes-executor: + condition: service_started environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -559,8 +585,10 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - redis - - + redis: + condition: service_healthy + : + condition: service_healthy environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -598,8 +626,10 @@ $dbService = $this->getParam('database'); volumes: - appwrite-uploads:/storage/uploads:rw depends_on: - - redis - - + redis: + condition: service_healthy + : + condition: service_healthy environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -652,7 +682,8 @@ $dbService = $this->getParam('database'); volumes: - appwrite-imports:/storage/imports:rw depends_on: - - + : + condition: service_healthy environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -688,8 +719,10 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - redis - - + redis: + condition: service_healthy + : + condition: service_healthy environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -730,8 +763,10 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - redis - - + redis: + condition: service_healthy + : + condition: service_healthy environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -761,8 +796,10 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - redis - - + redis: + condition: service_healthy + : + condition: service_healthy environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -791,8 +828,10 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - redis - - + redis: + condition: service_healthy + : + condition: service_healthy environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -821,8 +860,10 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - - - redis + : + condition: service_healthy + redis: + condition: service_healthy environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -848,8 +889,10 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - - - redis + : + condition: service_healthy + redis: + condition: service_healthy environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -875,8 +918,10 @@ $dbService = $this->getParam('database'); networks: - appwrite depends_on: - - - - redis + : + condition: service_healthy + redis: + condition: service_healthy environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -966,7 +1011,6 @@ $dbService = $this->getParam('database'); - OPR_EXECUTOR_STORAGE_WASABI_BUCKET=$_APP_STORAGE_WASABI_BUCKET - mariadb: image: mariadb:10.11 container_name: appwrite-mariadb @@ -982,6 +1026,12 @@ $dbService = $this->getParam('database'); - MYSQL_PASSWORD=${_APP_DB_PASS} - MARIADB_AUTO_UPGRADE=1 command: 'mysqld --innodb-flush-method=fsync' + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + interval: 10s + timeout: 10s + retries: 10 + start_period: 30s @@ -1059,18 +1109,24 @@ $dbService = $this->getParam('database'); postgresql: - image: postgres:18 + image: appwrite/postgres:0.1.0 container_name: appwrite-postgresql restart: unless-stopped networks: - appwrite volumes: - - appwrite-postgresql:/var/lib/postgresql/data:rw + - appwrite-postgresql:/var/lib/postgresql:rw environment: - POSTGRES_DB=${_APP_DB_SCHEMA} - POSTGRES_USER=${_APP_DB_USER} - POSTGRES_PASSWORD=${_APP_DB_PASS} command: "postgres" + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${_APP_DB_USER} -d ${_APP_DB_SCHEMA}"] + interval: 10s + timeout: 10s + retries: 10 + start_period: 30s @@ -1088,6 +1144,12 @@ $dbService = $this->getParam('database'); - appwrite volumes: - appwrite-redis:/data:rw + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 10s # clamav: # image: appwrite/clamav:1.2.0 @@ -1114,6 +1176,7 @@ volumes: appwrite-mongodb: appwrite-mongodb-keyfile: + appwrite-mongodb-config: appwrite-redis: appwrite-cache: diff --git a/app/views/install/env.phtml b/app/views/install/env.phtml index c3ebb6f918..51bda7a6fb 100644 --- a/app/views/install/env.phtml +++ b/app/views/install/env.phtml @@ -3,6 +3,10 @@ $vars = $this->getParam('vars'); foreach ($vars as $key => $value) { - echo $key.'='.$value."\n"; + if ($value === null || $value === '') { + echo $key . "=\n"; + } else { + echo $key . '="' . addcslashes((string) $value, '"\\$`') . '"' . "\n"; + } } ?> \ No newline at end of file diff --git a/app/views/install/installer.phtml b/app/views/install/installer.phtml new file mode 100644 index 0000000000..05bc1b80ed --- /dev/null +++ b/app/views/install/installer.phtml @@ -0,0 +1,147 @@ + + + + + + + <?php echo $isUpgrade ? 'Appwrite Update' : 'Appwrite Installation'; ?> + + + + + + + + + + + + + + + + + data-locked-database="" + + data-default-http-port="" + data-default-https-port="" + data-default-app-domain="" + data-default-email-certificates="" + data-default-secret-key="" + data-default-assistant-openai-key="" + data-default-database="" + data-enabled-databases="" + + data-dev-mode="true" + +> + + +
+
+
+
+ +
+
+
+
+
+ + + + + +
+
+
+
+
+ +
+
+
+ +
+ +
+ + + +
+ + diff --git a/app/views/install/installer/css/styles.css b/app/views/install/installer/css/styles.css new file mode 100644 index 0000000000..b1d8fe5089 --- /dev/null +++ b/app/views/install/installer/css/styles.css @@ -0,0 +1,1786 @@ +/* Installer Styles - Pink v2 tokens and components */ + +:root { + /* Neutral colors */ + --neutral-0: rgba(255, 255, 255, 1); + --neutral-25: rgba(250, 250, 251, 1); + --neutral-40: rgba(244, 244, 247, 1); + --neutral-50: rgba(237, 237, 240, 1); + --neutral-100: rgba(228, 228, 231, 1); + --neutral-200: rgba(216, 216, 219, 1); + --neutral-300: rgba(173, 173, 176, 1); + --neutral-400: rgba(151, 151, 155, 1); + --neutral-500: rgba(129, 129, 134, 1); + --neutral-600: rgba(108, 108, 113, 1); + --neutral-700: rgba(86, 86, 92, 1); + --neutral-750: rgba(65, 65, 70, 1); + --neutral-800: rgba(45, 45, 49, 1); + --neutral-850: rgba(29, 29, 33, 1); + --neutral-900: rgba(25, 25, 28, 1); + --neutral-250: rgba(195, 195, 198, 1); + + /* Warning colors */ + --web-orange-200: rgba(255, 213, 194, 1); + --web-orange-500: rgba(254, 124, 67, 1); + --web-orange-700: rgba(97, 37, 10, 1); + + /* Error colors */ + --web-red-500: rgba(255, 69, 58, 1); + --web-red-700: rgba(179, 18, 18, 1); + + /* Brand colors */ + --brand-pink-500: rgba(253, 54, 110, 1); + --brand-pink-600: rgba(202, 43, 88, 1); + --brand-pink-700: rgba(152, 32, 66, 1); + + /* Background colors */ + --bgcolor-neutral-default: var(--neutral-25); + --bgcolor-neutral-primary: var(--neutral-0); + --bgcolor-neutral-secondary: var(--neutral-40); + --bgcolor-neutral-tertiary: var(--neutral-50); + --bgcolor-neutral-invert-weaker: var(--neutral-500); + --bgcolor-neutral-invert-weak: var(--neutral-700); + --bgcolor-accent: var(--brand-pink-500); + --bgcolor-accent-secondary: var(--brand-pink-600); + --bgcolor-accent-tertiary: var(--brand-pink-700); + --bgcolor-success-weak: rgba(16, 185, 129, 0.16); + --bgcolor-warning-weaker: rgba(254, 124, 67, 0.04); + --bgcolor-warning-weak: rgba(254, 124, 67, 0.16); + --bgcolor-error: var(--web-red-500); + --bgcolor-error-weaker: rgba(255, 69, 58, 0.04); + + /* Foreground colors */ + --fgcolor-neutral-primary: var(--neutral-800); + --fgcolor-neutral-secondary: var(--neutral-700); + --fgcolor-neutral-tertiary: var(--neutral-400); + --fgcolor-neutral-weak: var(--neutral-200); + --fgcolor-accent: var(--brand-pink-500); + --fgcolor-on-accent: var(--neutral-0); + --fgcolor-on-invert: var(--neutral-25); + --fgcolor-on-success-weak: rgba(10, 113, 79, 1); + --fgcolor-warning: rgba(97, 37, 10, 1); + --fgcolor-on-warning-weak: var(--web-orange-700); + --fgcolor-error: var(--web-red-700); + --fgcolor-on-error: var(--neutral-0); + + /* Border colors */ + --border-neutral: var(--neutral-50); + --border-neutral-strong: var(--neutral-200); + --border-neutral-stronger: var(--neutral-500); + --border-focus: var(--neutral-300); + --border-accent: var(--brand-pink-500); + --border-warning-weak: rgba(254, 124, 67, 0.32); + --border-error: var(--web-red-500); + --border-error-weak: rgba(255, 69, 58, 0.32); + + /* Overlay colors */ + --overlay-neutral-hover: rgba(25, 25, 28, 0.03); + --overlay-neutral-pressed: rgba(25, 25, 28, 0.04); + --overlay-scrim: rgba(25, 25, 28, 0.8); + + /* Icon sizes */ + --icon-size-s: var(--base-16); + + /* Typography */ + --font-family-brand: 'Aeonik Pro'; + --font-family-sansserif: 'Inter'; + --font-family-code: 'Fira Code'; + --sans-fallbacks: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + --mono-fallbacks: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, monospace; + + --font-size-xs: 12px; + --font-size-s: 14px; + --font-size-m: 16px; + --font-size-l: 20px; + --label-line-height: 19.6px; + + /* Motion */ + --duration-fast: 150ms; + --duration-short: 160ms; + --duration-medium: 200ms; + --duration-extended: 250ms; + --duration-slow: 300ms; + --ease-standard: ease; + --ease-emphasized: cubic-bezier(0.32, 0.72, 0, 1); + --ease-in-out: ease-in-out; + --ease-out: ease-out; + + /* Spacing */ + --base-0: 0; + --base-2: 2px; + --base-4: 4px; + --base-6: 6px; + --base-8: 8px; + --base-10: 10px; + --base-12: 12px; + --base-16: 16px; + --base-20: 20px; + --base-24: 24px; + --base-32: 32px; + --base-40: 40px; + --base-48: 48px; + + /* Component sizing */ + --button-min-width-s: 60px; + + --space-0: var(--base-0); + --space-1: var(--base-2); + --space-2: var(--base-4); + --space-3: var(--base-6); + --space-4: var(--base-8); + --space-5: var(--base-10); + --space-6: var(--base-12); + --space-7: var(--base-16); + --space-8: var(--base-20); + --space-9: var(--base-24); + --space-10: var(--base-32); + --space-11: var(--base-40); + --space-12: var(--base-48); + + /* Gap scale (Pink tokens) */ + --gap-none: var(--base-0); + --gap-xxxs: var(--base-2); + --gap-xxs: var(--base-4); + --gap-xs: var(--base-6); + --gap-s: var(--base-8); + --gap-m: var(--base-12); + --gap-l: var(--base-16); + --gap-xl: var(--base-20); + --gap-xxl: var(--base-32); + --gap-xxxl: var(--base-40); + + /* Border radius */ + --border-radius-s: 8px; + --border-radius-xs: 6px; + --border-radius-m: 12px; + --border-radius-l: 16px; + + /* Border widths */ + --border-width-s: 1px; + --border-width-l: 2px; + + /* Installer layout vars */ + --step-min-height: auto; + --divider-gap-top: var(--gap-xl); + + /* Animation vars */ + --spinner-rotation: 0deg; + + /* Legacy aliases */ + --bgColor-neutral-default: var(--bgcolor-neutral-default); + --bgColor-neutral-primary: var(--bgcolor-neutral-primary); + --bgColor-accent: var(--bgcolor-accent); + --fgColor-neutral-primary: var(--fgcolor-neutral-primary); + --fgColor-neutral-secondary: var(--fgcolor-neutral-secondary); + --fgColor-neutral-tertiary: var(--fgcolor-neutral-tertiary); + --fgColor-neutral-weak: var(--fgcolor-neutral-weak); + --fgColor-accent: var(--fgcolor-accent); + --fgColor-on-accent: var(--fgcolor-on-accent); + + color-scheme: light dark; +} + +@media (prefers-color-scheme: dark) { + :root { + --bgcolor-neutral-default: var(--neutral-900); + --bgcolor-neutral-primary: var(--neutral-850); + --bgcolor-neutral-secondary: var(--neutral-800); + --bgcolor-neutral-tertiary: var(--neutral-800); + --bgcolor-neutral-invert-weaker: var(--neutral-400); + --bgcolor-neutral-invert-weak: var(--neutral-300); + --bgcolor-success-weak: rgba(16, 185, 129, 0.12); + --bgcolor-warning-weaker: rgba(254, 124, 67, 0.08); + --bgcolor-warning-weak: rgba(254, 124, 67, 0.12); + --bgcolor-error-weaker: rgba(255, 69, 58, 0.08); + + --fgcolor-neutral-primary: var(--neutral-50); + --fgcolor-neutral-secondary: var(--neutral-250); + --fgcolor-neutral-tertiary: var(--neutral-500); + --fgcolor-neutral-weak: var(--neutral-600); + --fgcolor-on-accent: var(--neutral-0); + --fgcolor-on-invert: var(--neutral-900); + --fgcolor-on-success-weak: rgba(52, 211, 153, 1); + --fgcolor-warning: var(--web-orange-500); + --fgcolor-on-warning-weak: var(--web-orange-500); + --fgcolor-error: var(--web-red-500); + --fgcolor-on-error: var(--neutral-0); + + --border-neutral: var(--neutral-800); + --border-neutral-strong: var(--neutral-750); + --border-neutral-stronger: var(--neutral-600); + --border-focus: var(--neutral-600); + + --overlay-neutral-hover: rgba(255, 255, 255, 0.04); + --overlay-neutral-pressed: rgba(255, 255, 255, 0.08); + --overlay-scrim: rgba(0, 0, 0, 0.48); + } +} + +.installer-toast-stack { + position: fixed; + top: var(--base-12); + right: var(--base-12); + display: flex; + flex-direction: column; + gap: var(--space-4); + z-index: 60; + pointer-events: none; +} + +.installer-toast { + inline-size: 24rem; + display: inline-flex; + align-items: start; + justify-content: space-between; + gap: var(--space-6); + padding: var(--space-4); + border-radius: var(--border-radius-m); + border: var(--border-width-s) solid var(--border-neutral); + background: var(--bgcolor-neutral-primary); + box-shadow: + 0 2px 12px 0 rgba(0, 0, 0, 0.02), + 0 6px 8px 0 rgba(0, 0, 0, 0.02); + pointer-events: auto; + opacity: 1; + transform: translate3d(0, 0, 0); + will-change: transform, opacity; + transition: + transform 400ms cubic-bezier(0.33, 1, 0.68, 1), + opacity 400ms cubic-bezier(0.33, 1, 0.68, 1); +} + +.installer-toast.is-entering { + opacity: 0; + transform: translate3d(50px, 0, 0); +} + +.installer-toast.is-leaving { + opacity: 0; + transform: translate3d(50px, 0, 0); + pointer-events: none; +} + +.installer-toast-content { + display: flex; + align-items: start; + gap: var(--space-6); +} + +.installer-toast-body { + display: flex; + flex-direction: column; + gap: var(--space-2); + margin-block: auto; +} + +.installer-toast-icon { + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + border-radius: var(--border-radius-s); + background: var(--bgcolor-neutral-invert-weaker); + color: var(--fgcolor-on-invert); + flex-shrink: 0; +} + +.installer-toast-icon svg { + width: 16px; + height: 16px; + display: block; +} + +.installer-toast-icon[data-status='error'] { + background: var(--bgcolor-error); + color: var(--fgcolor-on-error); +} + +.installer-toast-close { + display: inline-flex; + align-items: center; + justify-content: center; + padding: var(--space-3); + border: var(--border-width-s) solid transparent; + border-radius: var(--border-radius-s); + background: transparent; + color: var(--fgcolor-neutral-tertiary); + cursor: pointer; + transition: all 0.15s ease-in-out; +} + +.installer-toast-close svg { + width: 16px; + height: 16px; + display: block; +} + +.installer-toast-close:hover { + color: var(--fgcolor-neutral-secondary); + background: var(--overlay-neutral-hover); +} + +.installer-toast-close:active { + color: var(--fgcolor-neutral-secondary); + background: var(--overlay-neutral-pressed); +} + +.installer-toast-close:focus-visible { + outline: var(--border-width-l) solid var(--border-focus); + outline-offset: var(--border-width-s); +} + +.is-hidden { + display: none !important; +} + +@media (min-width: 768px) { + .installer-toast-stack { + top: var(--base-24); + right: var(--base-24); + } +} + +@media (max-width: 640px) { + .installer-toast-stack { + left: 0; + right: 0; + top: var(--base-12); + padding: 0 var(--space-4); + align-items: stretch; + } + + .installer-toast { + inline-size: 100%; + } +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + color: var(--fgcolor-neutral-primary); + background: var(--bgcolor-neutral-default); + font-family: var(--font-family-sansserif), var(--sans-fallbacks), sans-serif; +} + +.installer-page { + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + padding: var(--space-7); + gap: var(--gap-l); + background: var(--bgcolor-neutral-default); + position: relative; + overflow: hidden; +} + +.installer-main { + flex: 1; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + position: relative; + z-index: 1; + min-height: 0; +} + +.installer-backdrop { + position: fixed; + inset: 0; + opacity: 0; + pointer-events: none; + transition: opacity var(--duration-medium) var(--ease-standard); + z-index: 0; +} + +.installer-page[data-step='5'] .installer-backdrop { + opacity: 1; +} + +.installer-gradients { + top: 34%; + left: 17%; + width: 409px; + height: 194px; + opacity: 0.32; + position: absolute; + pointer-events: none; + transform: translateY(-50%) rotate(-25deg); +} + +.installer-blob { + position: absolute; + left: 0; + top: 0; + --blob-x: 0; + --blob-y: 0; + transform: translate(var(--blob-x), var(--blob-y)) scale(1); + transform-origin: center; + animation: none; +} + +.installer-blob.blob-one { + --blob-x: 268.3px; + --blob-y: 108.3px; +} + +.installer-blob.blob-two { + --blob-x: 101.3px; + --blob-y: 101.3px; +} + +.installer-card { + width: 100%; + max-width: 500px; + max-height: 100%; + padding: var(--space-8); + background: var(--bgcolor-neutral-primary); + border-radius: var(--border-radius-l); + outline: var(--border-width-s) solid var(--border-neutral); + outline-offset: -1px; + display: flex; + flex-direction: column; + gap: 0; + transition: opacity var(--duration-medium) var(--ease-standard); + overflow: hidden; +} + +.installer-page[data-step='5'] .installer-card { + opacity: 0; + pointer-events: none; +} + +.installer-page[data-install-locked='true'] .step-indicators { + opacity: 0.4; +} + +.selector-card.is-disabled { + cursor: default; + pointer-events: auto; +} + +.selector-card.is-disabled .selector-content, +.selector-card.is-disabled .selector-icon { + opacity: 0.4; +} + +.installer-step { + display: grid; + position: relative; + width: 100%; + min-height: var(--step-min-height, auto); + flex: 1 1 auto; + overflow: hidden; +} + +.action-shell { + display: flex; + flex-direction: column; + width: 100%; + margin-top: auto; + flex-shrink: 0; +} + +.install-screen { + position: absolute; + inset: 0; + display: flex; + align-items: center; + justify-content: center; + opacity: 0; + pointer-events: none; + transition: opacity var(--duration-medium) var(--ease-standard); + z-index: 1; +} + +.installer-page[data-step='5'] .install-screen { + opacity: 1; + pointer-events: auto; +} + +.install-screen-content { + width: 100%; + max-width: 500px; +} + +.step-panel { + grid-area: 1 / 1; + width: 100%; + opacity: 1; + transition: opacity var(--duration-medium) var(--ease-standard); + will-change: opacity; +} + +.step-panel:not(.is-measure) { + height: 100%; + overflow-y: auto; + scrollbar-gutter: stable; + scrollbar-width: none; + -ms-overflow-style: none; +} + +.step-panel:not(.is-measure)::-webkit-scrollbar { + width: 0; + height: 0; +} + +.step-panel.is-entering { + opacity: 0; + pointer-events: none; +} + +.step-panel.is-exiting { + opacity: 0; + pointer-events: none; +} + +.step-panel.is-measure { + position: absolute; + top: 0; + left: 0; + width: 100%; + opacity: 0; + visibility: hidden; + pointer-events: none; +} + +.stack-none { + display: flex; + flex-direction: column; + gap: var(--gap-none); +} + +.stack-xxxs { + display: flex; + flex-direction: column; + gap: var(--gap-xxxs); +} + +.stack-xxs { + display: flex; + flex-direction: column; + gap: var(--gap-xxs); +} + +.stack-xs { + display: flex; + flex-direction: column; + gap: var(--gap-xs); +} + +.stack-s { + display: flex; + flex-direction: column; + gap: var(--gap-s); +} + +.stack-m { + display: flex; + flex-direction: column; + gap: var(--gap-m); +} + +.stack-l { + display: flex; + flex-direction: column; + gap: var(--gap-l); +} + +.stack-xl { + display: flex; + flex-direction: column; + gap: var(--gap-xl); +} + +.stack-xxl { + display: flex; + flex-direction: column; + gap: var(--gap-xxl); +} + +.stack-xxxl { + display: flex; + flex-direction: column; + gap: var(--gap-xxxl); +} + +.install-layout { + width: 100%; +} + +.install-card { + width: 100%; + padding: var(--space-2); + background: var(--bgcolor-neutral-default); + border-radius: var(--border-radius-l); + border: var(--border-width-s) solid var(--border-neutral); +} + +.install-panel { + display: flex; + flex-direction: column; + align-items: stretch; + gap: var(--gap-xxxs); + transition: height 0.3s cubic-bezier(0.32, 0.72, 0, 1); +} + +.install-header { + padding: var(--space-4); + display: flex; + flex-direction: column; + align-items: center; + gap: var(--gap-xxxs); +} + +.install-list { + display: flex; + flex-direction: column; + align-items: stretch; + gap: 0; +} + +.install-row { + display: flex; + flex-direction: column; + align-items: stretch; + padding: 0; + background: var(--bgcolor-neutral-primary); + border: var(--border-width-s) solid var(--border-neutral); + border-radius: 0; + overflow: hidden; + opacity: 1; + transform: translateY(0); + transition: opacity 0.2s ease, + transform 0.3s cubic-bezier(0.32, 0.72, 0, 1); + will-change: transform, opacity; +} + +.install-row-main { + display: flex; + align-items: center; + gap: var(--gap-s); + height: 44px; + padding: 0 var(--space-6); + transition: height 0.3s cubic-bezier(0.32, 0.72, 0, 1), + opacity 0.2s ease, + transform 0.3s cubic-bezier(0.32, 0.72, 0, 1); +} + +.install-row-label { + display: flex; + align-items: center; + gap: var(--gap-s); + min-width: 0; + min-height: 0; + padding-block-start: 0; +} + +.install-text { + min-width: 0; + display: inline-flex; + transition: opacity 0.2s ease, transform 0.2s ease; +} + +.install-text.is-enter { + opacity: 0; + transform: translateY(10px); +} + +.install-row-toggle { + margin-left: auto; + width: 32px; + height: 32px; + border: none; + border-radius: var(--border-radius-xs); + background: transparent; + color: var(--fgcolor-neutral-secondary); + display: none; + align-items: center; + justify-content: center; + cursor: pointer; + opacity: 0; + pointer-events: none; + transition: background-color var(--duration-short) var(--ease-standard), + color var(--duration-short) var(--ease-standard), + transform var(--duration-short) var(--ease-standard); +} + +.install-row-toggle svg { + width: 20px; + height: 20px; +} + + +.install-row-details { + max-height: none; + opacity: 0; + overflow: hidden; + display: grid; + grid-template-rows: 0fr; + padding: 0; + border: none; + transition: grid-template-rows var(--duration-medium) var(--ease-standard), + opacity var(--duration-medium) var(--ease-standard); +} + +.install-row:first-child { + border-top-left-radius: var(--border-radius-m); + border-top-right-radius: var(--border-radius-m); +} + +.install-row + .install-row { + margin-top: -1px; +} + +.install-row:last-child { + border-bottom-left-radius: var(--border-radius-m); + border-bottom-right-radius: var(--border-radius-m); +} + +.install-row.is-entering { + opacity: 0; + transform: translateY(-20px); +} + +.install-row.is-entering .install-row-main { + height: 0; + opacity: 0; + transform: translateY(-20px); +} + +.install-icon { + width: 16px; + height: 16px; + display: inline-flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + position: relative; + overflow: hidden; +} + +.install-icon-spinner, +.install-icon-check { + display: inline-flex; + align-items: center; + justify-content: center; + position: absolute; + inset: 0; + transition: opacity 200ms cubic-bezier(0.32, 0.72, 0, 1); +} + +.install-icon-error { + display: inline-flex; + align-items: center; + justify-content: center; + position: absolute; + inset: 0; + opacity: 0; + transition: opacity 200ms cubic-bezier(0.32, 0.72, 0, 1); + color: var(--fgcolor-error); +} + +.install-icon-check { + opacity: 0; +} + +.install-icon-spinner svg { + animation: none; + transform: rotate(var(--spinner-rotation)); +} + +.install-row[data-status='completed'] .install-icon-spinner { + opacity: 0; +} + +.install-row[data-status='completed'] .install-icon-spinner svg { + animation: none; +} + +.install-row[data-status='completed'] .install-icon-check { + opacity: 1; +} + +/* Keep the checkmark subtle: rely on container fade only (no stroke drawing). */ + +.install-row[data-status='error'] { + height: auto; + overflow: hidden; +} + +.install-row[data-status='error'] .install-icon-spinner, +.install-row[data-status='error'] .install-icon-check { + opacity: 0; +} + +.install-row[data-status='error'] .install-icon-error { + opacity: 1; +} + +.install-row[data-status='error'] .install-row-toggle { + opacity: 1; + pointer-events: auto; + display: inline-flex; +} + +.install-row[data-status='error'] { + cursor: pointer; +} + +.install-row[data-status='error'] .button { + cursor: pointer; +} + +.install-row.is-open .install-row-toggle { + transform: rotate(180deg); +} + +.install-row.is-open .install-row-details { + grid-template-rows: 1fr; + opacity: 1; +} + +.install-row-details-inner { + position: relative; + overflow: hidden; + display: flex; + flex-direction: column; + gap: 0; + border-top: var(--border-width-s) solid var(--border-neutral); + border-left: none; + border-right: none; + border-radius: 0; + background: var(--bgcolor-neutral-primary); +} + +.install-error-code { + margin: 0; + padding: var(--space-4) var(--space-6); + width: 100%; + background: var(--bgcolor-neutral-default); + border: none; + border-radius: 0; + font-family: var(--font-family-code), var(--mono-fallbacks), monospace; + font-size: var(--font-size-xs); + line-height: 140%; + letter-spacing: 0; + white-space: pre-wrap; + word-break: break-word; + overflow-wrap: break-word; + max-height: 160px; + overflow-y: auto; + overflow-x: auto; + color: var(--fgcolor-neutral-primary); + scrollbar-width: none; + -ms-overflow-style: none; +} + +.install-error-code::-webkit-scrollbar { + width: 0; + height: 0; +} + + +.install-error-actions { + padding: var(--space-3) var(--space-6); + background: var(--bgcolor-neutral-primary); + border-top: var(--border-width-s) solid var(--border-neutral); + border-radius: 0 0 var(--border-radius-m) var(--border-radius-m); + display: flex; + justify-content: flex-end; + flex-direction: row; + gap: var(--gap-m); +} + +.install-error-details .button { + align-self: center; + margin-top: 0; +} + +@keyframes install-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +.typography-title-s { + font-family: var(--font-family-brand), var(--sans-fallbacks), sans-serif; + font-size: var(--font-size-l); + font-weight: 400; + line-height: 130%; + letter-spacing: -0.144px; +} + +.typography-title-s, +.typography-text-m-400, +.typography-text-m-500 { + margin: 0; +} + +.typography-text-m-400 { + font-family: var(--font-family-brand), var(--sans-fallbacks), sans-serif; + font-size: var(--font-size-s); + font-weight: 400; + line-height: 140%; + letter-spacing: -0.063px; +} + +.typography-text-m-500 { + font-family: var(--font-family-brand), var(--sans-fallbacks), sans-serif; + font-size: var(--font-size-s); + font-weight: 500; + line-height: 140%; + letter-spacing: -0.063px; +} + +.typography-text-xs-400 { + font-family: var(--font-family-sansserif), var(--sans-fallbacks), sans-serif; + font-size: var(--font-size-xs); + font-weight: 400; + line-height: 130%; + letter-spacing: -0.12px; +} + +.typography-text-xs-500 { + font-family: var(--font-family-sansserif), var(--sans-fallbacks), sans-serif; + font-size: var(--font-size-xs); + font-weight: 500; + line-height: 130%; + letter-spacing: -0.12px; +} + +.typography-caption-400 { + font-family: var(--font-family-sansserif), var(--sans-fallbacks), sans-serif; + font-size: var(--font-size-xs); + font-weight: 400; + line-height: 140%; + letter-spacing: -0.063px; +} + +.typography-caption-500 { + font-family: var(--font-family-sansserif), var(--sans-fallbacks), sans-serif; + font-size: var(--font-size-xs); + font-weight: 500; + line-height: 140%; + letter-spacing: -0.063px; +} + +.label-text { + display: flex; + align-items: center; + gap: var(--space-1); +} + +.label-optional { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 var(--space-1); +} + +.label-info-button { + width: 16px; + height: 16px; + padding: 0; + border: none; + background: transparent; + color: var(--fgcolor-neutral-secondary); + display: inline-flex; + align-items: center; + justify-content: center; + cursor: default; +} + +.label-info-button svg { + width: 16px; + height: 16px; +} + +.text-neutral-primary { + color: var(--fgcolor-neutral-primary); +} + +.text-neutral-secondary { + color: var(--fgcolor-neutral-secondary); +} + +.text-neutral-tertiary { + color: var(--fgcolor-neutral-tertiary); +} + +.text-warning { + color: var(--fgcolor-warning); +} + +.text-error { + color: var(--fgcolor-error); +} + +.text-on-success-weak { + color: var(--fgcolor-on-success-weak); +} + +.text-on-invert { + color: var(--fgcolor-on-invert); +} + +.input-group { + width: 100%; +} + +.field-error { + display: flex; + align-items: flex-start; + gap: var(--space-3); + color: var(--fgcolor-error); + max-height: 0; + opacity: 0; + overflow: hidden; + /*padding-inline-start: var(--space-2);*/ + transition: max-height var(--duration-extended) var(--ease-standard), + opacity var(--duration-extended) var(--ease-standard); +} + +.field-error-icon { + display: flex; + flex-shrink: 0; + align-items: center; +} + +.field-error-icon svg { + width: 1rem; + height: 1rem; +} + +.field-error.is-visible { + opacity: 1; + max-height: 64px; +} + +.field-helper { + display: flex; + align-items: flex-start; + gap: var(--space-3); + color: var(--fgcolor-neutral-secondary); +} + +.field-helper-icon { + display: flex; + flex-shrink: 0; + align-items: center; +} + +.field-helper-icon svg { + width: 1rem; + height: 1rem; +} + +.input-field { + width: 100%; + padding: var(--space-3) var(--space-6); + background: var(--bgcolor-neutral-default); + border: var(--border-width-s) solid var(--border-neutral); + outline: none; + border-radius: var(--border-radius-s); + transition: all var(--duration-fast) var(--ease-in-out); +} + +.input-field:focus { + border-color: var(--border-focus); + box-shadow: inset 0 0 0 1px var(--border-focus); +} + +.input-field.is-error { + border-color: var(--border-error); + box-shadow: none; +} + +.input-field.is-error:focus { + border-color: var(--border-error); + box-shadow: inset 0 0 0 1px var(--border-error); +} + +.input-field::placeholder { + color: var(--fgcolor-neutral-tertiary); +} + +.input-field[type='number'] { + appearance: textfield; + -moz-appearance: textfield; +} + +.input-field[type='number']::-webkit-outer-spin-button, +.input-field[type='number']::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + +.selector-group { + display: flex; + gap: var(--gap-m); + width: 100%; + position: relative; + overflow: visible; +} + +.selector-card { + position: relative; + flex: 1; + min-height: 52px; + display: flex; + align-items: center; + gap: var(--gap-s); + padding: var(--space-4) var(--space-6); + background: var(--bgcolor-neutral-default); + border: none; + box-shadow: inset 0 0 0 var(--border-width-s) var(--border-neutral); + border-radius: var(--border-radius-s); + cursor: pointer; + overflow: hidden; + transition: all var(--duration-fast) var(--ease-in-out); +} + +.selector-card.has-tooltip { + overflow: visible; +} + +.selector-card::before { + content: ''; + position: absolute; + inset: 0; + background: var(--overlay-neutral-hover); + opacity: 0; + transition: opacity var(--duration-fast) var(--ease-in-out); +} + +.selector-card:hover::before, +.selector-card.selected::before { + opacity: 1; +} + +.selector-card.is-disabled::before, +.selector-card.is-disabled:hover::before { + opacity: 0; +} + +.selector-group.is-locked .selector-card { + cursor: default; +} + +.selector-group.is-locked .selector-card:hover::before { + opacity: 0; +} + +.selector-card.has-tooltip .tooltip { + top: calc(100% + 6px); + bottom: auto; + transform: translateX(-50%) translateY(-8px); +} + +.selector-card.has-tooltip { + z-index: 0; +} + +.selector-card.has-tooltip:hover { + z-index: 3; +} + +.selector-card.has-tooltip:hover .tooltip, +.selector-card.has-tooltip:focus-within .tooltip { + opacity: 1; + visibility: visible; + transform: translateX(-50%) translateY(0); + transition: opacity var(--duration-short) var(--ease-standard), + transform var(--duration-short) var(--ease-standard), + visibility 0s; +} + +.tooltip-db-locked { + width: 193px; + max-width: none; + min-width: 193px; + text-align: center; +} +.selector-card.selected { + box-shadow: inset 0 0 0 var(--border-width-s) var(--border-neutral-stronger); +} + +.selector-card:focus-within { + outline: none; + box-shadow: inset 0 0 0 var(--border-width-s) var(--border-neutral), + inset 0 0 0 var(--border-width-l) var(--border-focus); +} + +.selector-card.selected:focus-within { + box-shadow: inset 0 0 0 var(--border-width-s) var(--border-neutral-stronger), + inset 0 0 0 var(--border-width-l) var(--border-focus); +} + +.selector-content { + position: relative; + display: flex; + flex-direction: column; + gap: 0; + flex: 1; +} + +.selector-icon { + position: relative; + width: 32px; + height: 32px; + flex-shrink: 0; +} + +.accordion { + display: flex; + flex-direction: column; + gap: 0; +} + +.accordion-toggle { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--gap-s); + width: 100%; + padding: 0; + border: none; + border-radius: var(--border-radius-s); + background: transparent; + cursor: pointer; + transition: background var(--duration-fast) var(--ease-in-out); + font-family: inherit; + font-size: inherit; + font-weight: inherit; + line-height: inherit; + letter-spacing: inherit; +} + +.accordion-toggle:focus-visible { + outline: var(--border-width-l) solid var(--border-focus); +} + +.accordion-chevron { + width: 20px; + height: 20px; + transition: transform var(--duration-slow) var(--ease-in-out); + color: var(--fgcolor-neutral-tertiary); +} + +.accordion-chevron[data-open='true'] { + transform: rotate(180deg); +} + +.accordion-content { + display: flex; + flex-direction: column; + gap: var(--gap-l); + width: 100%; + max-height: 0; + opacity: 0; + overflow: hidden; + transition: max-height var(--duration-medium) var(--ease-out), + opacity var(--duration-medium) var(--ease-out); +} + +.accordion-content.open { + opacity: 1; + overflow: visible; + margin-top: var(--gap-m); +} + +.divider { + width: 100%; + height: 1px; + background: var(--border-neutral); + margin-top: var(--divider-gap-top, var(--gap-xl)); + margin-bottom: var(--gap-xl); +} + +.button { + display: inline-flex; + align-items: center; + justify-content: center; + gap: var(--gap-xs); + padding: var(--space-3) var(--space-5); + min-height: var(--space-10); + min-width: var(--button-min-width-s); + border-radius: var(--border-radius-s); + border: none; + box-shadow: inset 0 0 0 var(--border-width-s) transparent; + cursor: pointer; + transition: all var(--duration-fast) var(--ease-in-out); + outline-offset: var(--border-width-s); + background: transparent; + color: var(--fgcolor-neutral-secondary); +} + +.button-text { + display: inline-flex; + align-items: center; +} + +.button:focus-visible { + outline: var(--border-width-l) solid var(--border-focus); +} + +.button.primary { + background: var(--bgcolor-accent); + box-shadow: inset 0 0 0 var(--border-width-s) var(--bgcolor-accent); + color: var(--fgcolor-on-accent); +} + +.button.primary:hover { + background: var(--bgcolor-accent-secondary); + box-shadow: inset 0 0 0 var(--border-width-s) var(--bgcolor-accent-secondary); +} + +.button.primary:active { + background: var(--bgcolor-accent-tertiary); + box-shadow: inset 0 0 0 var(--border-width-s) var(--bgcolor-accent-tertiary); +} + +.button.primary:disabled { + background: var(--bgcolor-neutral-invert-weaker); + box-shadow: inset 0 0 0 var(--border-width-s) var(--bgcolor-neutral-invert-weaker); +} + +.button.secondary { + background: var(--bgcolor-neutral-primary); + box-shadow: inset 0 0 0 var(--border-width-s) var(--border-neutral); + color: var(--fgcolor-neutral-primary); +} + +.button.secondary:hover { + background: var(--bgcolor-neutral-secondary); +} + +.button.secondary:active { + background: var(--bgcolor-neutral-tertiary); +} + +.button.secondary:disabled { + box-shadow: inset 0 0 0 var(--border-width-s) var(--border-neutral-strong); +} + +.button:disabled { + opacity: 0.4; + pointer-events: none; +} + +.action-bar { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--gap-xl); + width: 100%; + flex-wrap: nowrap; +} + +.step-indicators { + display: flex; + align-items: center; + line-height: 0; +} + +.step-indicator { + display: inline-flex; + align-items: center; + justify-content: center; + line-height: 0; + color: var(--fgcolor-neutral-weak); +} + +.step-indicator svg { + display: block; +} + +.step-indicator .indicator-active { + display: none; +} + +.step-indicator.is-active .indicator-active { + display: inline-flex; +} + +.step-indicator.is-active .indicator-inactive { + display: none; +} + +.step-indicator.is-hidden { + display: none; +} + +.step-layout { + display: flex; + flex-direction: column; + gap: 0; +} + +.inline-alert { + display: flex; + flex-direction: column; + align-items: flex-end; + gap: var(--gap-m); + width: 100%; + padding: var(--space-6); + background: var(--bgcolor-neutral-default); + border-radius: var(--border-radius-s); + outline: var(--border-width-s) solid var(--border-neutral-strong); + outline-offset: -1px; + --alert-primary-color: var(--fgcolor-neutral-secondary); +} + +.inline-alert--warning { + background: var(--bgcolor-warning-weaker); + outline-color: var(--border-warning-weak); + --alert-primary-color: var(--fgcolor-warning); +} + +.inline-alert-content { + display: inline-flex; + align-items: flex-start; + gap: var(--gap-s); + align-self: stretch; +} + +.inline-alert-icon { + width: 20px; + height: 20px; + display: inline-flex; + align-items: center; + justify-content: center; + color: var(--alert-primary-color); + flex-shrink: 0; +} + +.inline-alert-text { + display: flex; + flex-direction: column; + gap: var(--space-1); +} + +.input-action { + display: flex; + align-items: center; + gap: var(--gap-l); + width: 100%; + padding: var(--space-3) var(--space-5) var(--space-3) var(--space-6); + background: var(--bgcolor-neutral-default); + border-radius: var(--border-radius-s); + border: var(--border-width-s) solid var(--border-neutral); + outline: none; + transition: all var(--duration-fast) var(--ease-in-out); +} + +.input-action:focus-within { + border-color: var(--border-focus); + box-shadow: inset 0 0 0 1px var(--border-focus); +} + +.input-action.is-error { + border-color: var(--border-error); + box-shadow: none; +} + +.input-action.is-error:focus-within { + border-color: var(--border-error); + box-shadow: inset 0 0 0 1px var(--border-error); +} + +.input-action-input { + flex: 1; + border: none; + background: transparent; + padding: 0; + outline: none; +} + +.input-action-buttons { + display: flex; + align-items: center; + gap: var(--gap-m); +} + +.tooltip-wrapper { + position: relative; + display: inline-flex; +} + +.tooltip { + position: absolute; + left: 50%; + bottom: calc(100% + 6px); + transform: translateX(-50%) translateY(8px); + display: inline-flex; + align-items: center; + justify-content: center; + width: max-content; + max-width: 11.25rem; + padding: var(--space-2) var(--space-4); + border-radius: var(--border-radius-s); + background: var(--bgcolor-neutral-invert-weak); + color: var(--fgcolor-on-invert); + opacity: 0; + visibility: hidden; + pointer-events: none; + transition: opacity var(--duration-short) var(--ease-standard), + transform var(--duration-short) var(--ease-standard), + visibility 0s linear var(--duration-short); + z-index: 5; +} + +.tooltip.is-open { + opacity: 1; + visibility: visible; + transform: translateY(0); + transition: opacity var(--duration-short) var(--ease-standard), + transform var(--duration-short) var(--ease-standard), + visibility 0s; +} + +.tooltip-portal { + position: fixed; + left: 0; + top: 0; + bottom: auto; + transform: translateY(8px); +} + +.tooltip-assistant { + width: 246px; + max-width: 246px; + text-align: left; +} + +.tooltip-wrapper:hover .tooltip, +.tooltip-wrapper:focus-within .tooltip, +.tooltip-wrapper.is-open .tooltip { + opacity: 1; + visibility: visible; + transform: translateX(-50%) translateY(0); + transition: opacity var(--duration-short) var(--ease-standard), + transform var(--duration-short) var(--ease-standard), + visibility 0s; +} + +.input-icon-button { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0; + border: none; + background: transparent; + color: var(--fgcolor-neutral-secondary); + cursor: pointer; + border-radius: var(--border-radius-xs); +} + +.input-icon-button svg { + width: 16px; + height: 16px; + display: block; +} + +.input-icon-button:hover { + background: var(--overlay-neutral-hover); +} + +.input-icon-button:active { + background: var(--overlay-neutral-pressed); +} + +.password-toggle-icon { + display: inline-flex; +} + +.password-toggle [data-password-icon="hide"] { + display: none; +} + +.password-toggle.is-visible [data-password-icon="show"] { + display: none; +} + +.password-toggle.is-visible [data-password-icon="hide"] { + display: inline-flex; +} + +.icon-button { + display: inline-flex; + align-items: center; + justify-content: center; + padding: var(--space-3); + background: var(--bgcolor-neutral-primary); + border-radius: var(--border-radius-s); + outline: var(--border-width-s) solid var(--border-neutral-strong); + outline-offset: -1px; + border: none; + color: var(--fgcolor-neutral-tertiary); + cursor: pointer; +} + +.icon-button.is-rotating svg { + animation: installer-rotate-once 0.35s linear; +} + +.input-row { + display: flex; + align-items: flex-start; + gap: var(--space-4); + width: 100%; +} + +.input-row .input-group { + flex: 1; +} + +.input-row .button { + margin-top: calc(var(--label-line-height) + var(--space-3)); +} + +.input-row .icon-button { + margin-top: calc(var(--label-line-height) + var(--space-3)); +} + +.review-card { + width: 100%; + padding: var(--space-6); + background: var(--bgcolor-neutral-default); + border-radius: var(--border-radius-m); + outline: var(--border-width-s) solid var(--border-neutral); + outline-offset: -1px; + display: flex; + flex-direction: column; + gap: var(--space-5); +} + +.review-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--gap-m); +} + +.review-label { + text-align: right; +} + +.badge { + display: inline-flex; + align-items: center; + justify-content: center; + padding: var(--space-1) var(--space-2); + border-radius: 6px; +} + +.badge-success { + background: var(--bgcolor-success-weak); + color: var(--fgcolor-on-success-weak); +} + +.badge-warning { + background: var(--bgcolor-warning-weak); + color: var(--fgcolor-on-warning-weak); +} + +.badge-neutral { + background: var(--bgcolor-neutral-tertiary); + color: var(--fgcolor-neutral-secondary); +} + +.installer-footer { + width: 100%; + display: flex; + justify-content: center; + padding-bottom: var(--space-7); + position: relative; + z-index: 1; +} + +.appwrite-logo { + width: 131px; + height: 25px; + position: relative; +} + +.appwrite-logo svg { + width: 100%; + height: 100%; + display: block; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +@media (prefers-reduced-motion: reduce) { + * { + transition: none !important; + animation: none !important; + } +} + +@keyframes installer-rotate-once { + to { + transform: rotate(360deg); + } +} + +@media (max-width: 640px) { + .installer-page { + padding: var(--space-6); + gap: var(--gap-m); + } + + .installer-card { + padding: var(--space-6); + } + + .installer-step { + min-height: 0; + } + + .selector-group { + flex-direction: column; + } + + .input-row { + flex-direction: column; + align-items: stretch; + } + + .input-row .button { + align-self: flex-start; + margin-top: 0; + } + + .input-row .icon-button { + margin-top: 0; + } + + .step-layout[data-step='2'] .input-row { + flex-direction: row; + align-items: flex-end; + } + + .action-bar { + gap: var(--gap-s); + } +} diff --git a/app/views/install/installer/icons/appwrite-logo.svg b/app/views/install/installer/icons/appwrite-logo.svg new file mode 100644 index 0000000000..af9378f8fc --- /dev/null +++ b/app/views/install/installer/icons/appwrite-logo.svg @@ -0,0 +1,13 @@ + diff --git a/app/views/install/installer/icons/appwrite-mark.svg b/app/views/install/installer/icons/appwrite-mark.svg new file mode 100644 index 0000000000..7dff2b5fc4 --- /dev/null +++ b/app/views/install/installer/icons/appwrite-mark.svg @@ -0,0 +1,4 @@ + diff --git a/app/views/install/installer/icons/chevron-down.svg b/app/views/install/installer/icons/chevron-down.svg new file mode 100644 index 0000000000..74d9c14cfd --- /dev/null +++ b/app/views/install/installer/icons/chevron-down.svg @@ -0,0 +1,3 @@ + diff --git a/app/views/install/installer/icons/copy.svg b/app/views/install/installer/icons/copy.svg new file mode 100644 index 0000000000..008d89098a --- /dev/null +++ b/app/views/install/installer/icons/copy.svg @@ -0,0 +1,4 @@ + diff --git a/app/views/install/installer/icons/exclamation-circle.svg b/app/views/install/installer/icons/exclamation-circle.svg new file mode 100644 index 0000000000..3416951e48 --- /dev/null +++ b/app/views/install/installer/icons/exclamation-circle.svg @@ -0,0 +1,3 @@ + diff --git a/app/views/install/installer/icons/eye-off.svg b/app/views/install/installer/icons/eye-off.svg new file mode 100644 index 0000000000..9c0b0a063b --- /dev/null +++ b/app/views/install/installer/icons/eye-off.svg @@ -0,0 +1,4 @@ + + + + diff --git a/app/views/install/installer/icons/eye.svg b/app/views/install/installer/icons/eye.svg new file mode 100644 index 0000000000..897b425bf3 --- /dev/null +++ b/app/views/install/installer/icons/eye.svg @@ -0,0 +1,4 @@ + + + + diff --git a/app/views/install/installer/icons/indicator-active.svg b/app/views/install/installer/icons/indicator-active.svg new file mode 100644 index 0000000000..e620bdf6e9 --- /dev/null +++ b/app/views/install/installer/icons/indicator-active.svg @@ -0,0 +1,3 @@ + diff --git a/app/views/install/installer/icons/indicator-inactive.svg b/app/views/install/installer/icons/indicator-inactive.svg new file mode 100644 index 0000000000..550101da9b --- /dev/null +++ b/app/views/install/installer/icons/indicator-inactive.svg @@ -0,0 +1,3 @@ + diff --git a/app/views/install/installer/icons/info.svg b/app/views/install/installer/icons/info.svg new file mode 100644 index 0000000000..6f0524fb49 --- /dev/null +++ b/app/views/install/installer/icons/info.svg @@ -0,0 +1,3 @@ + diff --git a/app/views/install/installer/icons/install-bg-1.svg b/app/views/install/installer/icons/install-bg-1.svg new file mode 100644 index 0000000000..7291974bee --- /dev/null +++ b/app/views/install/installer/icons/install-bg-1.svg @@ -0,0 +1,16 @@ + diff --git a/app/views/install/installer/icons/install-bg-2.svg b/app/views/install/installer/icons/install-bg-2.svg new file mode 100644 index 0000000000..9e49ddb99f --- /dev/null +++ b/app/views/install/installer/icons/install-bg-2.svg @@ -0,0 +1,16 @@ + diff --git a/app/views/install/installer/icons/install-check.svg b/app/views/install/installer/icons/install-check.svg new file mode 100644 index 0000000000..7d43d007c6 --- /dev/null +++ b/app/views/install/installer/icons/install-check.svg @@ -0,0 +1,4 @@ + diff --git a/app/views/install/installer/icons/install-spinner.svg b/app/views/install/installer/icons/install-spinner.svg new file mode 100644 index 0000000000..543d2c4b22 --- /dev/null +++ b/app/views/install/installer/icons/install-spinner.svg @@ -0,0 +1,4 @@ + diff --git a/app/views/install/installer/icons/lock.svg b/app/views/install/installer/icons/lock.svg new file mode 100644 index 0000000000..6a87c21345 --- /dev/null +++ b/app/views/install/installer/icons/lock.svg @@ -0,0 +1,3 @@ + diff --git a/app/views/install/installer/icons/mariadb.svg b/app/views/install/installer/icons/mariadb.svg new file mode 100644 index 0000000000..921fbbb0dc --- /dev/null +++ b/app/views/install/installer/icons/mariadb.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/app/views/install/installer/icons/mongodb.svg b/app/views/install/installer/icons/mongodb.svg new file mode 100644 index 0000000000..5470eccb38 --- /dev/null +++ b/app/views/install/installer/icons/mongodb.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/views/install/installer/icons/postgresql.svg b/app/views/install/installer/icons/postgresql.svg new file mode 100644 index 0000000000..f891b75c37 --- /dev/null +++ b/app/views/install/installer/icons/postgresql.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/views/install/installer/icons/refresh.svg b/app/views/install/installer/icons/refresh.svg new file mode 100644 index 0000000000..56f70b425a --- /dev/null +++ b/app/views/install/installer/icons/refresh.svg @@ -0,0 +1,3 @@ + diff --git a/app/views/install/installer/icons/step-dot.svg b/app/views/install/installer/icons/step-dot.svg new file mode 100644 index 0000000000..490a039d20 --- /dev/null +++ b/app/views/install/installer/icons/step-dot.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/views/install/installer/icons/warning.svg b/app/views/install/installer/icons/warning.svg new file mode 100644 index 0000000000..131b29171c --- /dev/null +++ b/app/views/install/installer/icons/warning.svg @@ -0,0 +1,3 @@ + diff --git a/app/views/install/installer/js/constants.js b/app/views/install/installer/js/constants.js new file mode 100644 index 0000000000..940c0bc780 --- /dev/null +++ b/app/views/install/installer/js/constants.js @@ -0,0 +1,11 @@ +(() => { + window.InstallerConstants = Object.freeze({ + stepTransitionMs: 260, + errorClearMs: 180, + installPollIntervalMs: 4000, + installFallbackDelayMs: 12000, + redirectDelayMs: 2500, + progressTransitionDelayMs: 320, + progressCompleteDelayMs: 140, + }); +})(); diff --git a/app/views/install/installer/js/installer.js b/app/views/install/installer/js/installer.js new file mode 100644 index 0000000000..463b7f6221 --- /dev/null +++ b/app/views/install/installer/js/installer.js @@ -0,0 +1,450 @@ +(() => { + const stepContainer = document.querySelector('.installer-step'); + const installerCard = document.querySelector('.installer-card'); + const backButton = document.querySelector('[data-action="back"]'); + const nextButton = document.querySelector('[data-action="next"]'); + const installScreen = document.querySelector('.install-screen-content'); + const indicatorNodes = Array.from(document.querySelectorAll('.step-indicator')); + const STEP_TRANSITION_TIMEOUT = window.InstallerConstants?.stepTransitionMs ?? 260; + + if (!stepContainer || !installerCard) return; + + const { validateInstallRequest } = window.InstallerStepsProgress || {}; + + const isUpgrade = document.body?.dataset.upgrade === 'true'; + const stepFlow = isUpgrade ? [1, 4, 5] : [1, 2, 3, 4, 5]; + const cardSteps = stepFlow.filter((step) => step !== 5); + + const normalizeStep = (step) => { + const numeric = clampStep(step); + if (stepFlow.includes(numeric)) return numeric; + if (numeric <= stepFlow[0]) return stepFlow[0]; + for (let i = 0; i < stepFlow.length; i += 1) { + if (numeric < stepFlow[i]) { + return stepFlow[i]; + } + } + return stepFlow[stepFlow.length - 1]; + }; + + const buildStepConfig = () => { + const config = {}; + stepFlow.forEach((step, index) => { + if (step === 5) { + config[step] = { back: { target: null }, next: { target: null } }; + return; + } + const prev = stepFlow[index - 1] ?? null; + const next = stepFlow[index + 1] ?? null; + const label = next === 5 ? (isUpgrade ? 'Update' : 'Install') : 'Next'; + config[step] = { + back: { target: prev }, + next: { label, target: next } + }; + }); + return config; + }; + + const STEP_CONFIG = buildStepConfig(); + + const stepCache = new Map(); + let maxStepHeight = 0; + let isTransitioning = false; + let pendingStep = null; + let pendingPushState = false; + + const clampStep = (step) => Math.max(1, Math.min(5, step)); + const isInstallLocked = () => Boolean(window.InstallerSteps?.isInstallLocked?.()); + + const scrollToFirstError = (panel) => { + if (!panel) return; + const getErrorNode = () => panel.querySelector('.field-error.is-visible') + || panel.querySelector('.field-error') + || panel.querySelector('.input-field.is-error, .input-action.is-error'); + const container = panel.closest('.step-panel') || panel; + const attemptScroll = () => { + const target = getErrorNode(); + if (!target || typeof target.getBoundingClientRect !== 'function') return false; + const targetRect = target.getBoundingClientRect(); + const containerRect = container.getBoundingClientRect(); + const targetTop = targetRect.top - containerRect.top + container.scrollTop; + const targetBottom = targetTop + targetRect.height; + const viewTop = container.scrollTop; + const viewBottom = viewTop + containerRect.height; + const padding = 12; + + let nextScrollTop = viewTop; + if (targetTop < viewTop + padding) { + nextScrollTop = Math.max(0, targetTop - padding); + } else if (targetBottom > viewBottom - padding) { + nextScrollTop = Math.max(0, targetBottom - containerRect.height + padding); + } + + if (Math.abs(nextScrollTop - viewTop) < 1) { + return false; + } + + container.scrollTo({ top: nextScrollTop, behavior: 'smooth' }); + return true; + }; + + let remaining = 20; + let lastScrollTop = -1; + const settle = () => { + if (remaining <= 0) return; + const moved = attemptScroll(); + remaining -= 1; + const currentTop = container.scrollTop; + const delta = Math.abs(currentTop - lastScrollTop); + lastScrollTop = currentTop; + if (!moved && delta < 0.5) { + return; + } + requestAnimationFrame(settle); + }; + requestAnimationFrame(settle); + }; + + const getStepFromUrl = () => { + const url = new URL(window.location.href); + const step = Number(url.searchParams.get('step') || 1); + return normalizeStep(Number.isNaN(step) ? 1 : step); + }; + + const buildStepUrl = (step) => { + const url = new URL(window.location.href); + url.searchParams.set('step', step); + return url; + }; + + const setStepInUrl = (step, pushState) => { + const url = new URL(window.location.href); + url.searchParams.set('step', step); + + if (pushState) { + window.history.pushState({ step }, '', url.toString()); + } + + return url; + }; + + const updateActionBar = (step) => { + const config = STEP_CONFIG[step] || STEP_CONFIG[1]; + if (!backButton || !nextButton) return; + const locked = isInstallLocked(); + + const setButtonLabel = (button, label) => { + if (!button) return; + let text = button.querySelector('.button-text'); + if (!text) { + text = document.createElement('span'); + text.className = 'button-text typography-text-m-500'; + button.textContent = ''; + button.appendChild(text); + } + text.textContent = label; + }; + + if (!locked && config.back?.target) { + backButton.disabled = false; + backButton.setAttribute('data-step-target', String(config.back.target)); + } else { + backButton.disabled = true; + backButton.removeAttribute('data-step-target'); + } + setButtonLabel(backButton, 'Back'); + + if (!locked && config.next?.target) { + setButtonLabel(nextButton, config.next?.label || 'Next'); + nextButton.setAttribute('data-step-target', String(config.next?.target || 1)); + nextButton.disabled = false; + } else { + setButtonLabel(nextButton, config.next?.label || 'Next'); + nextButton.removeAttribute('data-step-target'); + nextButton.disabled = true; + } + + indicatorNodes.forEach((node, index) => { + const isVisible = index < cardSteps.length; + node.classList.toggle('is-hidden', !isVisible); + if (!isVisible) { + node.classList.remove('is-active'); + return; + } + node.classList.toggle('is-active', cardSteps[index] === step); + }); + + installerCard.setAttribute('data-step', String(step)); + document.body.dataset.step = String(step); + if (locked) { + document.body.dataset.installLocked = 'true'; + } else { + delete document.body.dataset.installLocked; + } + }; + + const measureStepHeight = (panel) => { + if (!panel) return; + const height = panel.getBoundingClientRect().height; + if (!height) return; + maxStepHeight = Math.max(maxStepHeight, height); + stepContainer.style.setProperty('--step-min-height', `${maxStepHeight}px`); + }; + + const runStepInit = (step, rootElement) => { + if (!window.InstallerSteps || typeof window.InstallerSteps.initStep !== 'function') return; + const root = rootElement || stepContainer; + window.InstallerSteps.initStep(step, root); + updateActionBar(step); + }; + + const fetchStepHtml = (step, url) => { + if (stepCache.has(step)) { + return Promise.resolve(stepCache.get(step)); + } + + const fetchUrl = new URL(url); + fetchUrl.searchParams.set('partial', '1'); + + return fetch(fetchUrl.toString(), { + headers: { + 'X-Requested-With': 'XMLHttpRequest' + } + }) + .then((response) => { + if (!response.ok) { + throw new Error('Failed to load step'); + } + return response.text(); + }) + .then((html) => { + stepCache.set(step, html); + return html; + }); + }; + + const preloadSteps = (steps) => { + const current = getStepFromUrl(); + const targets = steps.filter((step) => step !== current); + + return Promise.all( + targets.map((step) => { + const url = buildStepUrl(step); + return fetchStepHtml(step, url) + .then((html) => { + const panel = document.createElement('div'); + panel.className = 'step-panel is-measure'; + panel.innerHTML = html; + stepContainer.appendChild(panel); + panel.getBoundingClientRect(); + measureStepHeight(panel); + panel.remove(); + }) + .catch(() => null); + }) + ); + }; + + const swapPanels = (step, html, onDone) => { + const activePanel = stepContainer.querySelector('.step-panel'); + + const measurePanel = document.createElement('div'); + measurePanel.className = 'step-panel is-measure'; + measurePanel.innerHTML = html; + stepContainer.appendChild(measurePanel); + measurePanel.getBoundingClientRect(); + measureStepHeight(measurePanel); + measurePanel.remove(); + + const newPanel = document.createElement('div'); + newPanel.className = 'step-panel is-entering'; + newPanel.innerHTML = html; + stepContainer.appendChild(newPanel); + runStepInit(step, newPanel); + + newPanel.getBoundingClientRect(); + + requestAnimationFrame(() => { + newPanel.classList.remove('is-entering'); + newPanel.classList.add('is-active'); + if (activePanel) { + activePanel.classList.add('is-exiting'); + } + }); + + const finalize = () => { + if (activePanel && activePanel.parentNode) { + activePanel.parentNode.removeChild(activePanel); + } + newPanel.classList.remove('is-entering'); + if (typeof onDone === 'function') { + onDone(); + } + }; + + const prefersReduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches; + if (prefersReduced) { + finalize(); + return; + } + + let finished = false; + const finishOnce = () => { + if (finished) return; + finished = true; + finalize(); + }; + + newPanel.addEventListener( + 'transitionend', + (event) => { + if (event.propertyName === 'opacity') { + finishOnce(); + } + }, + { once: true } + ); + + setTimeout(finishOnce, STEP_TRANSITION_TIMEOUT); + }; + + const showInstallScreen = (step, html) => { + if (!installScreen) return; + installScreen.innerHTML = html; + runStepInit(step, installScreen); + }; + + const hideInstallScreen = () => { + if (!installScreen) return; + installScreen.innerHTML = ''; + }; + + const loadStep = (step, pushState) => { + const targetStep = normalizeStep(Number(step)); + const currentStep = getStepFromUrl(); + if (targetStep === currentStep && pushState) return; + + isTransitioning = true; + const url = setStepInUrl(targetStep, pushState); + + fetchStepHtml(targetStep, url) + .then((html) => { + if (targetStep === 5) { + showInstallScreen(targetStep, html); + isTransitioning = false; + if (pendingStep !== null && pendingStep !== targetStep) { + const nextStep = pendingStep; + const nextPushState = pendingPushState; + pendingStep = null; + pendingPushState = false; + loadStep(nextStep, nextPushState); + return; + } + pendingStep = null; + pendingPushState = false; + return; + } + + hideInstallScreen(); + swapPanels(targetStep, html, () => { + isTransitioning = false; + if (pendingStep !== null && pendingStep !== targetStep) { + const nextStep = pendingStep; + const nextPushState = pendingPushState; + pendingStep = null; + pendingPushState = false; + loadStep(nextStep, nextPushState); + return; + } + pendingStep = null; + pendingPushState = false; + }); + }) + .catch(() => { + isTransitioning = false; + window.location.href = url.toString(); + }); + }; + + const requestStep = (step, pushState) => { + const targetStep = normalizeStep(Number(step)); + if (isInstallLocked() && targetStep !== 5) { + loadStep(5, true); + return; + } + if (isTransitioning) { + pendingStep = targetStep; + pendingPushState = pendingPushState || pushState; + return; + } + loadStep(targetStep, pushState); + }; + + document.addEventListener('click', async (event) => { + const button = event.target.closest('[data-step-target]'); + if (!button || button.disabled) return; + event.preventDefault(); + const target = button.getAttribute('data-step-target'); + if (!target) return; + const action = button.getAttribute('data-action'); + if (action === 'next') { + const currentStep = getStepFromUrl(); + const panel = stepContainer.querySelector('.step-panel') || stepContainer; + const validator = window.InstallerSteps?.validateStep; + if (typeof validator === 'function') { + const valid = validator(currentStep, panel); + if (!valid) { + scrollToFirstError(panel); + return; + } + } + } + if (action === 'next' && String(target) === '5' && typeof validateInstallRequest === 'function') { + const isValid = await validateInstallRequest(); + if (!isValid) { + return; + } + } + if (isInstallLocked() && Number(target) !== 5) { + requestStep(5, true); + return; + } + requestStep(target, true); + }); + + window.addEventListener('popstate', (event) => { + const step = event.state?.step || getStepFromUrl(); + if (isInstallLocked() && Number(step) !== 5) { + requestStep(5, false); + return; + } + requestStep(step, false); + }); + + document.addEventListener('DOMContentLoaded', () => { + let step = getStepFromUrl(); + if (isInstallLocked() && step !== 5) { + const url = buildStepUrl(5); + window.history.replaceState({ step: 5 }, '', url.toString()); + step = 5; + } else { + const url = buildStepUrl(step); + window.history.replaceState({ step }, '', url.toString()); + } + const activePanel = stepContainer.querySelector('.step-panel') || stepContainer; + runStepInit(step, activePanel); + measureStepHeight(activePanel); + if (step === 5 && installScreen) { + runStepInit(step, installScreen); + } + const preload = () => { + measureStepHeight(activePanel); + preloadSteps(cardSteps); + }; + if (document.fonts && document.fonts.ready) { + document.fonts.ready.then(preload).catch(preload); + } else { + preload(); + } + }); +})(); diff --git a/app/views/install/installer/js/modules/context.js b/app/views/install/installer/js/modules/context.js new file mode 100644 index 0000000000..c531ecddce --- /dev/null +++ b/app/views/install/installer/js/modules/context.js @@ -0,0 +1,111 @@ +(() => { + const getBodyDataset = () => document.body?.dataset ?? {}; + const isUpgradeMode = () => getBodyDataset().upgrade === 'true'; + const getLockedDatabase = () => getBodyDataset().lockedDatabase || ''; + const getEnabledDatabases = () => { + const raw = getBodyDataset().enabledDatabases; + if (!raw) return ['mongodb', 'mariadb', 'postgresql']; + try { return JSON.parse(raw); } catch (e) { return ['mongodb', 'mariadb', 'postgresql']; } + }; + + const STEP_IDS = Object.freeze({ + CONFIG_FILES: 'config-files', + DOCKER_COMPOSE: 'docker-compose', + ENV_VARS: 'env-vars', + DOCKER_CONTAINERS: 'docker-containers', + ACCOUNT_SETUP: 'account-setup' + }); + + const STATUS = Object.freeze({ + IN_PROGRESS: 'in-progress', + COMPLETED: 'completed', + ERROR: 'error' + }); + + const SSE_EVENTS = Object.freeze({ + PING: 'ping', + INSTALL_ID: 'install-id', + PROGRESS: 'progress', + DONE: 'done', + ERROR: 'error' + }); + + const buildInstallationSteps = (upgrade) => (upgrade ? [ + { + id: STEP_IDS.CONFIG_FILES, + inProgress: 'Updating configuration files...', + done: 'Configuration files updated' + }, + { + id: STEP_IDS.DOCKER_COMPOSE, + inProgress: 'Updating Docker Compose file...', + done: 'Docker Compose file updated' + }, + { + id: STEP_IDS.ENV_VARS, + inProgress: 'Updating environment variables...', + done: 'Environment variables updated' + }, + { + id: STEP_IDS.DOCKER_CONTAINERS, + inProgress: 'Restarting Docker containers...', + done: 'Docker containers restarted' + } + ] : [ + { + id: STEP_IDS.CONFIG_FILES, + inProgress: 'Creating configuration files...', + done: 'Configuration files created' + }, + { + id: STEP_IDS.DOCKER_COMPOSE, + inProgress: 'Generating Docker Compose file...', + done: 'Docker Compose file generated' + }, + { + id: STEP_IDS.ENV_VARS, + inProgress: 'Configuring environment variables...', + done: 'Environment variables configured' + }, + { + id: STEP_IDS.DOCKER_CONTAINERS, + inProgress: 'Starting Docker containers...', + done: 'Docker containers started' + }, + { + id: STEP_IDS.ACCOUNT_SETUP, + inProgress: 'Creating Appwrite account...', + done: 'Appwrite account created (redirecting...)' + } + ]); + + const INSTALLATION_STEPS = buildInstallationSteps(isUpgradeMode()); + const CONSTANTS = window.InstallerConstants || {}; + const TIMINGS = { + errorClear: CONSTANTS.errorClearMs ?? 180, + installPollInterval: CONSTANTS.installPollIntervalMs ?? 4000, + installFallbackDelay: CONSTANTS.installFallbackDelayMs ?? 12000, + redirectDelay: CONSTANTS.redirectDelayMs ?? 500, + progressTransitionDelay: CONSTANTS.progressTransitionDelayMs ?? 140, + progressCompleteDelay: CONSTANTS.progressCompleteDelayMs ?? 120 + }; + + const clampStep = (step) => { + const numeric = Number(step); + if (Number.isNaN(numeric)) return 1; + return Math.max(1, Math.min(5, numeric)); + }; + + window.InstallerStepsContext = Object.freeze({ + getBodyDataset, + isUpgradeMode, + getLockedDatabase, + getEnabledDatabases, + STEP_IDS, + STATUS, + SSE_EVENTS, + INSTALLATION_STEPS, + TIMINGS, + clampStep + }); +})(); diff --git a/app/views/install/installer/js/modules/progress.js b/app/views/install/installer/js/modules/progress.js new file mode 100644 index 0000000000..7f7b23e3fc --- /dev/null +++ b/app/views/install/installer/js/modules/progress.js @@ -0,0 +1,903 @@ +(() => { + const { + INSTALLATION_STEPS, + TIMINGS, + getBodyDataset, + isUpgradeMode, + STEP_IDS, + STATUS, + SSE_EVENTS + } = window.InstallerStepsContext; + const { + formState, + applyLockPayload, + applyBodyDefaults, + setInstallLock, + getInstallLock, + clearInstallLock, + isInstallLocked, + syncInstallLockFlag, + getStoredInstallId, + storeInstallId, + clearInstallId + } = window.InstallerStepsState || {}; + const { extractHostname, isLocalHost } = window.InstallerStepsValidation || {}; + const { generateSecretKey } = window.InstallerStepsUI || {}; + const { showToast } = window.InstallerToast || {}; + + let activeInstall = null; + let unloadGuard = null; + let sseSessionDetails = null; + const csrfToken = document.querySelector('meta[name="appwrite-installer-csrf"]')?.getAttribute('content') || ''; + + const withCsrfHeader = (headers = {}) => { + if (!csrfToken) { + return headers; + } + return { ...headers, 'X-Appwrite-Installer-CSRF': csrfToken }; + }; + + const showCsrfToast = () => { + showToast?.({ + status: 'error', + title: 'Session expired', + description: 'Refresh the page and try again.', + dismissible: true + }); + }; + + const validateInstallRequest = async () => { + try { + const response = await fetch('/install/validate', { + method: 'POST', + headers: withCsrfHeader({ + 'Content-Type': 'application/json' + }) + }); + if (!response.ok) { + showCsrfToast(); + return false; + } + const data = await response.json().catch(() => ({})); + if (!data?.success) { + showCsrfToast(); + return false; + } + return true; + } catch (error) { + showCsrfToast(); + return false; + } + }; + + const setUnloadGuard = (enabled) => { + if (!enabled && unloadGuard) { + window.removeEventListener('beforeunload', unloadGuard); + unloadGuard = null; + return; + } + + if (enabled && !unloadGuard) { + unloadGuard = (event) => { + event.preventDefault(); + event.returnValue = ''; + return ''; + }; + window.addEventListener('beforeunload', unloadGuard); + } + }; + + const cleanupInstallFlow = () => { + if (activeInstall?.controller) { + activeInstall.controller.abort(); + if (activeInstall.pollTimer) { + clearInterval(activeInstall.pollTimer); + } + if (activeInstall.fallbackTimer) { + clearTimeout(activeInstall.fallbackTimer); + } + activeInstall = null; + } + stopSyncedSpinnerRotation(); + setUnloadGuard(false); + }; + + const getStepDefinition = (id) => INSTALLATION_STEPS.find((step) => step.id === id); + + const getProgressLabel = (step, status, message) => { + if (!step) return message || ''; + if (status === STATUS.ERROR) { + const normalized = normalizeInstallError(message || ''); + return normalized.summary || 'Installation failed.'; + } + if (status === STATUS.COMPLETED) return step.done; + return step.inProgress; + }; + + const updateInstallRow = (row, step, status, message) => { + if (!row || !step) return; + row.dataset.status = status; + row.dataset.step = step.id; + if (status !== STATUS.ERROR) { + row.classList.remove('is-open'); + const toggle = row.querySelector('[data-install-toggle]'); + if (toggle) { + toggle.setAttribute('aria-expanded', 'false'); + } + } + const label = getProgressLabel(step, status, message); + const text = row.querySelector('[data-install-text]'); + if (text) { + if (text.textContent !== label) { + text.classList.remove('is-enter'); + text.textContent = label; + text.classList.add('is-enter'); + requestAnimationFrame(() => { + text.classList.remove('is-enter'); + }); + } + } + + // Show/hide "Navigate to Console" button for account setup errors + const consoleBtn = row.querySelector('[data-install-console]'); + if (consoleBtn) { + const shouldShow = step.id === STEP_IDS.ACCOUNT_SETUP && status === STATUS.ERROR; + consoleBtn.classList.toggle('is-hidden', !shouldShow); + } + }; + + const normalizeInstallError = (message) => { + const text = String(message || '').trim(); + if (!text) { + return { summary: '', details: '' }; + } + const colonIndex = text.indexOf(':'); + if (colonIndex > 0 && colonIndex < 80) { + const summary = text.slice(0, colonIndex).trim(); + const details = text.slice(colonIndex + 1).trim(); + return { summary, details }; + } + if (text.length > 180) { + return { summary: text.slice(0, 180).trim() + '…', details: text }; + } + return { summary: text, details: '' }; + }; + + let spinnerAnimationFrame = null; + const stopSyncedSpinnerRotation = () => { + if (spinnerAnimationFrame) { + cancelAnimationFrame(spinnerAnimationFrame); + spinnerAnimationFrame = null; + } + }; + + const startSyncedSpinnerRotation = (container) => { + stopSyncedSpinnerRotation(); + if (!container) return; + let startTime = null; + const animate = (timestamp) => { + if (!startTime) startTime = timestamp; + const elapsed = timestamp - startTime; + const rotation = ((elapsed / 1000) * 360 * 1.5) % 360; + container.style.setProperty('--spinner-rotation', `${rotation}deg`); + spinnerAnimationFrame = requestAnimationFrame(animate); + }; + spinnerAnimationFrame = requestAnimationFrame(animate); + }; + + const updateInstallErrorDetails = (row, error) => { + if (!row) return; + const traceNode = row.querySelector('[data-install-trace]'); + const normalized = normalizeInstallError(error?.message || ''); + const output = error?.output || ''; + const trace = error?.trace || ''; + const detailChunks = []; + if (normalized.details) detailChunks.push(normalized.details); + if (output) detailChunks.push(output); + if (trace) detailChunks.push(trace); + const detailText = detailChunks.join('\n\n'); + + if (traceNode) { + traceNode.textContent = detailText; + traceNode.style.display = detailText ? 'block' : 'none'; + } + }; + + const createInstallRow = (template, step) => { + const fragment = template.content.cloneNode(true); + const row = fragment.querySelector('.install-row'); + if (!row) return null; + const toggle = row.querySelector('[data-install-toggle]'); + const setOpenState = (isOpen) => { + row.classList.toggle('is-open', isOpen); + if (toggle) { + toggle.setAttribute('aria-expanded', isOpen ? 'true' : 'false'); + } + }; + const toggleRow = () => { + if (!row.dataset.status || row.dataset.status !== STATUS?.ERROR) { + return; + } + setOpenState(!row.classList.contains('is-open')); + }; + row.addEventListener('click', (event) => { + if (event.target.closest('[data-install-retry]')) { + return; + } + if (event.target.closest('[data-install-toggle]')) { + return; + } + if (event.target.closest('.install-row-details')) { + return; + } + toggleRow(); + }); + if (toggle) { + toggle.addEventListener('click', (event) => { + event.stopPropagation(); + toggleRow(); + }); + } + updateInstallRow(row, step, STATUS.IN_PROGRESS); + return row; + }; + + const generateInstallId = () => { + if (window.crypto?.randomUUID) { + return window.crypto.randomUUID(); + } + const bytes = new Uint8Array(16); + window.crypto.getRandomValues(bytes); + return Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join(''); + }; + + const buildRedirectUrl = () => { + const dataset = getBodyDataset?.() ?? {}; + const rawDomain = (formState?.appDomain || dataset.defaultAppDomain || '').trim(); + if (!rawDomain) return ''; + const httpPort = (formState?.httpPort || dataset.defaultHttpPort || '').trim(); + const httpsPort = (formState?.httpsPort || dataset.defaultHttpsPort || '').trim(); + const hasPort = rawDomain.includes(':') || rawDomain.startsWith('['); + let host = rawDomain; + const hostForProtocol = extractHostname?.(rawDomain); + const normalizedHost = hostForProtocol?.toLowerCase?.() ?? ''; + if (hostForProtocol === '0.0.0.0') { + host = rawDomain.replace('0.0.0.0', 'localhost'); + } else if (normalizedHost === 'traefik') { + host = rawDomain.replace(hostForProtocol, 'localhost'); + } + let protocol = 'http'; + let port = httpPort; + if (httpsPort && httpsPort !== '0' && !isLocalHost?.(normalizedHost)) { + protocol = 'https'; + port = httpsPort; + } + if (!hasPort && port && ((protocol === 'http' && port !== '80') || (protocol === 'https' && port !== '443'))) { + host = `${host}:${port}`; + } + return `${protocol}://${host}`; + }; + + const redirectToApp = () => { + const url = buildRedirectUrl(); + if (!url) return; + // Fire-and-forget: tell the installer server it can shut down + fetch('/install/shutdown', { method: 'POST', headers: withCsrfHeader() }).catch(() => {}); + window.location.href = url; + }; + + const notifyInstallComplete = (installId, session) => { + if (!installId) return Promise.resolve(); + const payload = { installId }; + const sessionSecret = session?.sessionSecret || session?.secret; + const sessionId = session?.sessionId || session?.id; + const sessionExpire = session?.sessionExpire || session?.expire; + if (sessionSecret) { + payload.sessionSecret = sessionSecret; + } + if (sessionId) { + payload.sessionId = sessionId; + } + if (sessionExpire) { + payload.sessionExpire = sessionExpire; + } + return fetch('/install/complete', { + method: 'POST', + headers: withCsrfHeader({ + 'Content-Type': 'application/json' + }), + body: JSON.stringify(payload) + }).catch(() => {}); + }; + + const buildInstallPayload = (installId) => { + const normalizedSecret = (formState?.opensslKey || '').trim(); + if (!normalizedSecret && generateSecretKey && !isUpgradeMode?.()) { + formState.opensslKey = generateSecretKey(); + } + const normalizedDomain = (formState?.appDomain || '').trim() || 'localhost'; + const normalizedHttpPort = (formState?.httpPort || '').trim() || '80'; + const normalizedHttpsPort = (formState?.httpsPort || '').trim() || '443'; + const normalizedEmail = (formState?.emailCertificates || '').trim(); + const normalizedAssistantKey = (formState?.assistantOpenAIKey || '').trim(); + const normalizedAccountEmail = (formState?.accountEmail || '').trim(); + const normalizedAccountPassword = (formState?.accountPassword || '').trim(); + + return { + installId, + httpPort: normalizedHttpPort, + httpsPort: normalizedHttpsPort, + database: formState?.database || 'mongodb', + appDomain: normalizedDomain, + emailCertificates: normalizedEmail, + opensslKey: (formState?.opensslKey || '').trim(), + assistantOpenAIKey: normalizedAssistantKey, + accountEmail: normalizedAccountEmail, + accountPassword: normalizedAccountPassword + }; + }; + + const fetchInstallStatus = async (installId) => { + if (!installId) return null; + const response = await fetch(`/install/status?installId=${encodeURIComponent(installId)}`, { + cache: 'no-store' + }); + if (!response.ok) return null; + const json = await response.json(); + return json.progress || null; + }; + + const readEventStream = async (stream, onEvent) => { + const reader = stream.getReader(); + const decoder = new TextDecoder('utf-8'); + let buffer = ''; + + try { + const processEvent = (rawEvent) => { + if (!rawEvent) return; + const lines = rawEvent.split('\n'); + let eventName = 'message'; + let data = ''; + + lines.forEach((line) => { + if (line.startsWith('event:')) { + eventName = line.replace('event:', '').trim(); + } else if (line.startsWith('data:')) { + data += line.replace('data:', '').trim(); + } + }); + + if (data) { + try { + const parsed = JSON.parse(data); + onEvent(eventName, parsed); + } catch (error) { + onEvent(eventName, { message: data }); + } + } + }; + + while (true) { + const { value, done } = await reader.read(); + if (done) { + buffer = buffer.replace(/\r\n/g, '\n'); + if (buffer.trim()) { + processEvent(buffer); + } + break; + } + buffer += decoder.decode(value, { stream: true }); + buffer = buffer.replace(/\r\n/g, '\n'); + let separatorIndex = buffer.indexOf('\n\n'); + + while (separatorIndex !== -1) { + const rawEvent = buffer.slice(0, separatorIndex); + buffer = buffer.slice(separatorIndex + 2); + processEvent(rawEvent); + separatorIndex = buffer.indexOf('\n\n'); + } + } + } finally { + try { + reader.releaseLock(); + } catch (error) {} + } + }; + + const initStep5 = (root) => { + if (!root) return; + + if (activeInstall?.controller) { + activeInstall.controller.abort(); + } + if (activeInstall?.pollTimer) { + clearInterval(activeInstall.pollTimer); + } + if (activeInstall?.fallbackTimer) { + clearTimeout(activeInstall.fallbackTimer); + } + activeInstall = null; + + const list = root.querySelector('[data-install-list]'); + const template = root.querySelector('#install-row-template'); + if (!list || !template) return; + startSyncedSpinnerRotation(list); + + list.innerHTML = ''; + const rowsById = new Map(); + const progressState = new Map(); + syncInstallLockFlag?.(); + applyLockPayload?.(); + applyBodyDefaults?.(); + + const ensureRow = (step) => { + if (!step) return null; + if (rowsById.has(step.id)) { + return rowsById.get(step.id); + } + const row = createInstallRow(template, step); + if (!row) return null; + row.classList.add('is-entering'); + list.appendChild(row); + row.getBoundingClientRect(); + requestAnimationFrame(() => { + row.classList.remove('is-entering'); + }); + rowsById.set(step.id, row); + return row; + }; + + const installPanel = root.querySelector('.install-panel'); + let panelHeightCleanup = null; + const animatePanelHeight = (mutate) => { + if (!installPanel) { + mutate(); + return; + } + if (panelHeightCleanup) { + panelHeightCleanup(); + panelHeightCleanup = null; + } + const currentHeight = installPanel.getBoundingClientRect().height; + installPanel.style.height = `${currentHeight}px`; + installPanel.getBoundingClientRect(); + mutate(); + const nextHeight = installPanel.getBoundingClientRect().height; + if (currentHeight === nextHeight) { + installPanel.style.height = ''; + return; + } + installPanel.style.height = `${currentHeight}px`; + installPanel.getBoundingClientRect(); + installPanel.style.height = `${nextHeight}px`; + const cleanup = () => { + installPanel.style.height = ''; + installPanel.removeEventListener('transitionend', onEnd); + }; + const onEnd = (event) => { + if (event.propertyName === 'height') { + cleanup(); + } + }; + panelHeightCleanup = cleanup; + installPanel.addEventListener('transitionend', onEnd); + }; + + const renderProgress = () => { + animatePanelHeight(() => { + const visibleSteps = []; + for (const step of INSTALLATION_STEPS) { + const state = progressState.get(step.id); + if (!state) break; + visibleSteps.push(step); + } + + visibleSteps.forEach((step) => { + const state = progressState.get(step.id); + if (!state) return; + const row = ensureRow(step); + if (row) { + updateInstallRow(row, step, state.status || STATUS.IN_PROGRESS, state.message); + if (state.status === STATUS?.ERROR) { + updateInstallErrorDetails(row, { + message: state.message, + trace: state.details?.trace, + output: state.details?.output + }); + } + } + }); + }); + }; + + const firstStep = INSTALLATION_STEPS[0]; + if (firstStep) { + progressState.set(firstStep.id, { + status: STATUS.IN_PROGRESS, + message: firstStep.inProgress + }); + } + renderProgress(); + + const applyProgress = (payload) => { + const step = getStepDefinition(payload.step) || { + id: payload.step, + inProgress: payload.message || payload.step, + done: payload.message || payload.step + }; + if (step.id === STEP_IDS.ACCOUNT_SETUP && payload.details?.sessionSecret) { + sseSessionDetails = payload.details; + } + progressState.set(step.id, { + status: payload.status || STATUS.IN_PROGRESS, + message: payload.message, + details: payload.details + }); + renderProgress(); + if (activeInstall) { + activeInstall.lastEventAt = Date.now(); + if (payload.status === STATUS.ERROR) { + if (activeInstall.pollTimer) { + clearInterval(activeInstall.pollTimer); + activeInstall.pollTimer = null; + } + if (activeInstall.fallbackTimer) { + clearTimeout(activeInstall.fallbackTimer); + activeInstall.fallbackTimer = null; + } + } + } + scheduleFallback(); + }; + + const handleProgress = (payload) => { + if (!payload || !payload.step) return; + + const existingState = progressState.get(payload.step); + if (existingState && existingState.status === STATUS.COMPLETED && payload.status === STATUS.IN_PROGRESS) { + return; + } + + const step = getStepDefinition(payload.step) || { + id: payload.step, + inProgress: payload.message || payload.step, + done: payload.message || payload.step + }; + if (payload.status === STATUS.IN_PROGRESS) { + const currentIndex = INSTALLATION_STEPS.findIndex((candidate) => candidate.id === step.id); + if (currentIndex > 0) { + for (let i = 0; i < currentIndex; i += 1) { + const previousStep = INSTALLATION_STEPS[i]; + const previousState = progressState.get(previousStep.id); + if (previousState && previousState.status !== STATUS.COMPLETED) { + progressState.set(previousStep.id, { + status: STATUS.COMPLETED, + message: previousStep.done, + details: previousState.details + }); + } + } + } + } + applyProgress(payload); + }; + + const applySnapshot = (snapshot) => { + if (!snapshot || !snapshot.steps) return; + INSTALLATION_STEPS.forEach((step) => { + const detail = snapshot.steps[step.id]; + if (!detail) return; + progressState.set(step.id, { + status: detail.status, + message: detail.message, + details: snapshot.details?.[step.id] + }); + }); + renderProgress(); + }; + + const checkAllCompleted = () => { + const allDone = INSTALLATION_STEPS.every((step) => { + const state = progressState.get(step.id); + return state && state.status === STATUS.COMPLETED; + }); + if (!allDone) return; + const accountState = progressState.get(STEP_IDS.ACCOUNT_SETUP); + const sessionDetails = sseSessionDetails || accountState?.details; + finalizeInstall(); + notifyInstallComplete(activeInstall?.installId, sessionDetails).finally(() => { + setTimeout(() => redirectToApp(), TIMINGS?.redirectDelay ?? 0); + }); + }; + + const startPolling = () => { + if (!activeInstall || activeInstall.pollTimer) return; + activeInstall.pollTimer = setInterval(async () => { + if (!activeInstall || activeInstall.completed) return; + const snapshot = await fetchInstallStatus(activeInstall.installId); + if (snapshot) { + applySnapshot(snapshot); + checkAllCompleted(); + } + }, TIMINGS?.installPollInterval ?? 0); + }; + + const scheduleFallback = () => { + if (!activeInstall) return; + if (activeInstall.fallbackTimer) { + clearTimeout(activeInstall.fallbackTimer); + } + activeInstall.fallbackTimer = setTimeout(() => { + if (!activeInstall) return; + startPolling(); + }, TIMINGS?.installFallbackDelay ?? 0); + }; + + const finalizeInstall = () => { + if (!activeInstall) return; + activeInstall.completed = true; + if (activeInstall.pollTimer) { + clearInterval(activeInstall.pollTimer); + } + if (activeInstall.fallbackTimer) { + clearTimeout(activeInstall.fallbackTimer); + } + stopSyncedSpinnerRotation(); + setUnloadGuard(false); + }; + + const startInstallStream = async (installId, options = {}) => { + const isValid = await validateInstallRequest(); + if (!isValid) { + return; + } + activeInstall = { + installId, + controller: new AbortController(), + lastEventAt: Date.now(), + pollTimer: null, + fallbackTimer: null, + completed: false + }; + + const payload = buildInstallPayload(installId); + if (options.retryStep) { + payload.retryStep = options.retryStep; + } + setInstallLock?.(installId, payload); + setUnloadGuard(true); + + try { + scheduleFallback(); + const response = await fetch('/install', { + method: 'POST', + headers: withCsrfHeader({ + 'Content-Type': 'application/json', + 'Accept': 'text/event-stream' + }), + body: JSON.stringify(payload), + signal: activeInstall.controller.signal + }); + + if (!response.ok || !response.body) { + let errorMessage = null; + try { + const contentType = response.headers.get('Content-Type') || ''; + if (contentType.includes('application/json')) { + const data = await response.json(); + errorMessage = data?.message || null; + } + } catch (error) { + errorMessage = null; + } + if (errorMessage) { + handleProgress({ + step: STEP_IDS.CONFIG_FILES, + status: STATUS.ERROR, + message: errorMessage + }); + finalizeInstall(); + return; + } + startPolling(); + return; + } + + await readEventStream(response.body, (event, data) => { + if (!activeInstall) return; + if (event === SSE_EVENTS.INSTALL_ID && data?.installId) { + activeInstall.installId = data.installId; + storeInstallId?.(data.installId); + return; + } + if (event === SSE_EVENTS.PROGRESS) { + handleProgress(data); + return; + } + if (event === SSE_EVENTS.DONE) { + // Mark every step as completed (preserving details + // from earlier progress events, e.g. session info). + INSTALLATION_STEPS.forEach((step) => { + const existing = progressState.get(step.id); + if (!existing || (existing.status !== STATUS.COMPLETED && existing.status !== STATUS.ERROR)) { + progressState.set(step.id, { + status: STATUS.COMPLETED, + message: step.done, + details: existing?.details + }); + } + }); + renderProgress(); + + // If any step ended in error (e.g. account creation + // failed), stay on the progress screen so the user can + // see the error and choose to retry or navigate to the + // console manually — don't auto-redirect. + const hasErrors = INSTALLATION_STEPS.some((step) => { + const state = progressState.get(step.id); + return state && state.status === STATUS.ERROR; + }); + + if (hasErrors) { + finalizeInstall(); + return; + } + + const accountState = progressState.get(STEP_IDS.ACCOUNT_SETUP); + const sessionDetails = sseSessionDetails || accountState?.details; + finalizeInstall(); + notifyInstallComplete(activeInstall?.installId, sessionDetails).finally(() => { + setTimeout(() => redirectToApp(), TIMINGS?.redirectDelay ?? 0); + }); + return; + } + if (event === SSE_EVENTS.ERROR) { + if (data?.message) { + const existingError = Array.from(progressState.values()).some((state) => state?.status === STATUS.ERROR); + if (data.step || !existingError) { + let targetStep = data.step; + if (!targetStep) { + for (const candidate of INSTALLATION_STEPS) { + const state = progressState.get(candidate.id); + if (!state || state.status !== STATUS.COMPLETED) { + targetStep = candidate.id; + break; + } + } + } + handleProgress({ + step: targetStep || STEP_IDS.CONFIG_FILES, + status: STATUS.ERROR, + message: data.message, + details: data.details + }); + } + } + finalizeInstall(); + } + }); + if (activeInstall && !activeInstall.completed) { + // Stream ended without a "done" event (e.g. browser + // throttled the background tab). Check if we're done. + checkAllCompleted(); + if (!activeInstall?.completed) { + startPolling(); + } + } + } catch (error) { + if (!activeInstall || activeInstall.controller.signal.aborted) { + return; + } + startPolling(); + } + }; + + const resumeInstall = async (installId) => { + const snapshot = await fetchInstallStatus(installId); + if (!snapshot) return false; + activeInstall = { + installId, + controller: new AbortController(), + lastEventAt: Date.now(), + pollTimer: null, + fallbackTimer: null, + completed: false + }; + applySnapshot(snapshot); + startPolling(); + setUnloadGuard(true); + return true; + }; + + const resetProgressFrom = (stepId) => { + const index = INSTALLATION_STEPS.findIndex((step) => step.id === stepId); + if (index === -1) return; + INSTALLATION_STEPS.slice(index).forEach((step) => { + progressState.delete(step.id); + const row = rowsById.get(step.id); + if (row && row.parentNode) { + row.parentNode.removeChild(row); + } + rowsById.delete(step.id); + }); + }; + + const retryInstallStep = (stepId) => { + if (!stepId) return; + if (activeInstall?.controller) { + activeInstall.controller.abort(); + } + if (activeInstall?.pollTimer) { + clearInterval(activeInstall.pollTimer); + } + if (activeInstall?.fallbackTimer) { + clearTimeout(activeInstall.fallbackTimer); + } + + resetProgressFrom(stepId); + + const step = getStepDefinition(stepId); + progressState.set(stepId, { + status: STATUS.IN_PROGRESS, + message: step?.inProgress || 'Retrying...' + }); + + const row = ensureRow(step); + if (row) { + updateInstallRow(row, step, STATUS.IN_PROGRESS, step.inProgress || 'Retrying...'); + } + + const installId = activeInstall?.installId || getInstallLock?.()?.installId || generateInstallId(); + storeInstallId?.(installId); + startInstallStream(installId, { retryStep: stepId }); + }; + + list.addEventListener('click', (event) => { + const consoleButton = event.target.closest('[data-install-console]'); + const retryButton = event.target.closest('[data-install-retry]'); + + if (consoleButton) { + redirectToApp(); + return; + } + + if (retryButton) { + const row = retryButton.closest('.install-row'); + const stepId = row?.dataset.step; + retryInstallStep(stepId); + } + }); + + // When the user switches back to this tab, check if installation + // finished while the tab was in the background. + document.addEventListener('visibilitychange', () => { + if (document.visibilityState === 'visible' && activeInstall && !activeInstall.completed) { + checkAllCompleted(); + } + }); + + const lock = getInstallLock?.(); + const existingInstallId = lock?.installId || getStoredInstallId?.(); + if (existingInstallId) { + resumeInstall(existingInstallId).then((resumed) => { + if (!resumed) { + clearInstallId?.(); + clearInstallLock?.(); + const newInstallId = generateInstallId(); + storeInstallId?.(newInstallId); + startInstallStream(newInstallId); + } + }); + } else { + const newInstallId = generateInstallId(); + storeInstallId?.(newInstallId); + startInstallStream(newInstallId); + } + }; + + window.InstallerStepsProgress = { + initStep5, + cleanupInstallFlow, + validateInstallRequest + }; +})(); diff --git a/app/views/install/installer/js/modules/state.js b/app/views/install/installer/js/modules/state.js new file mode 100644 index 0000000000..9fcf9969a8 --- /dev/null +++ b/app/views/install/installer/js/modules/state.js @@ -0,0 +1,158 @@ +(() => { + const { + getBodyDataset, + isUpgradeMode, + getLockedDatabase + } = window.InstallerStepsContext || {}; + + const INSTALL_LOCK_KEY = 'appwrite-install-lock'; + const INSTALL_ID_KEY = 'appwrite-install-id'; + + const formState = { + appDomain: null, + database: null, + httpPort: null, + httpsPort: null, + emailCertificates: null, + opensslKey: null, + assistantOpenAIKey: null, + accountEmail: null, + accountPassword: null + }; + + const dispatchStateChange = (key) => { + if (!key || typeof document === 'undefined') return; + try { + document.dispatchEvent(new CustomEvent('installer:state-change', { + detail: { key, value: formState[key] } + })); + } catch (error) {} + }; + + const setStateIfEmpty = (key, value) => { + if (value === null || value === undefined || value === '') return; + if (formState[key] === null || formState[key] === undefined || formState[key] === '') { + formState[key] = value; + } + }; + + const applyBodyDefaults = () => { + const data = getBodyDataset?.() ?? {}; + setStateIfEmpty('appDomain', data.defaultAppDomain); + setStateIfEmpty('httpPort', data.defaultHttpPort); + setStateIfEmpty('httpsPort', data.defaultHttpsPort); + setStateIfEmpty('emailCertificates', data.defaultEmailCertificates); + setStateIfEmpty('opensslKey', data.defaultSecretKey); + setStateIfEmpty('assistantOpenAIKey', data.defaultAssistantOpenaiKey); + if (data.lockedDatabase) { + formState.database = data.lockedDatabase; + } + if (!isUpgradeMode?.()) { + setStateIfEmpty('database', data.defaultDatabase); + } + }; + + const getInstallLock = () => { + try { + const raw = sessionStorage.getItem(INSTALL_LOCK_KEY); + if (!raw) return null; + const parsed = JSON.parse(raw); + if (!parsed || typeof parsed !== 'object') return null; + return parsed; + } catch (error) { + return null; + } + }; + + const setInstallLock = (installId, payload) => { + const sanitizedPayload = payload ? { ...payload } : null; + if (sanitizedPayload) { + delete sanitizedPayload.opensslKey; + delete sanitizedPayload.accountPassword; + delete sanitizedPayload.assistantOpenAIKey; + } + const lock = { + installId, + payload: sanitizedPayload, + startedAt: Date.now() + }; + try { + sessionStorage.setItem(INSTALL_LOCK_KEY, JSON.stringify(lock)); + } catch (error) {} + if (document.body) { + document.body.dataset.installLocked = 'true'; + } + return lock; + }; + + const clearInstallLock = () => { + try { + sessionStorage.removeItem(INSTALL_LOCK_KEY); + } catch (error) {} + if (document.body) { + delete document.body.dataset.installLocked; + } + }; + + const isInstallLocked = () => { + return Boolean(getInstallLock()); + }; + + const syncInstallLockFlag = () => { + if (!document.body) return; + if (isInstallLocked()) { + document.body.dataset.installLocked = 'true'; + } else { + delete document.body.dataset.installLocked; + } + }; + + const applyLockPayload = () => { + const lock = getInstallLock(); + if (!lock || !lock.payload) return; + const payload = lock.payload; + setStateIfEmpty('appDomain', payload.appDomain); + setStateIfEmpty('database', payload.database); + setStateIfEmpty('httpPort', payload.httpPort); + setStateIfEmpty('httpsPort', payload.httpsPort); + setStateIfEmpty('emailCertificates', payload.emailCertificates); + setStateIfEmpty('accountEmail', payload.accountEmail); + }; + + const getStoredInstallId = () => { + try { + return sessionStorage.getItem(INSTALL_ID_KEY); + } catch (error) { + return null; + } + }; + + const storeInstallId = (installId) => { + try { + sessionStorage.setItem(INSTALL_ID_KEY, installId); + } catch (error) {} + }; + + const clearInstallId = () => { + try { + sessionStorage.removeItem(INSTALL_ID_KEY); + } catch (error) {} + }; + + window.InstallerStepsState = { + formState, + dispatchStateChange, + setStateIfEmpty, + applyBodyDefaults, + applyLockPayload, + getInstallLock, + setInstallLock, + clearInstallLock, + isInstallLocked, + syncInstallLockFlag, + getStoredInstallId, + storeInstallId, + clearInstallId, + getLockedDatabase: getLockedDatabase || (() => '') + }; +})(); diff --git a/app/views/install/installer/js/modules/toast.js b/app/views/install/installer/js/modules/toast.js new file mode 100644 index 0000000000..5a8eb55f41 --- /dev/null +++ b/app/views/install/installer/js/modules/toast.js @@ -0,0 +1,95 @@ +(() => { + const TOAST_STACK_ID = 'installer-toast-stack'; + const DEFAULT_TIMEOUT = 5000; + const MAX_TOASTS = 3; + const ICONS = { + error: '', + close: '' + }; + + const getStack = () => document.getElementById(TOAST_STACK_ID); + + const dismissToast = (toast) => { + if (!toast) return; + if (toast.classList.contains('is-leaving')) return; + toast.classList.add('is-leaving'); + const remove = () => toast.remove(); + toast.addEventListener('transitionend', remove, { once: true }); + setTimeout(remove, 450); + }; + + const showToast = ({ + title = '', + description = '', + status = 'error', + dismissible = true, + timeout = DEFAULT_TIMEOUT + } = {}) => { + const stack = getStack(); + if (!stack) return; + const visibleToasts = Array.from( + stack.querySelectorAll('.installer-toast:not(.is-leaving)') + ); + if (visibleToasts.length >= MAX_TOASTS) { + dismissToast(visibleToasts[0]); + } + + const toast = document.createElement('div'); + toast.className = 'installer-toast is-entering'; + toast.dataset.status = status; + toast.setAttribute('role', status === 'error' ? 'alert' : 'status'); + + const content = document.createElement('div'); + content.className = 'installer-toast-content'; + + const icon = document.createElement('span'); + icon.className = 'installer-toast-icon'; + icon.dataset.status = status; + icon.innerHTML = ICONS.error; + content.appendChild(icon); + + const body = document.createElement('section'); + body.className = 'installer-toast-body'; + + if (title) { + const titleNode = document.createElement('p'); + titleNode.className = 'installer-toast-title typography-text-m-500'; + titleNode.textContent = title; + body.appendChild(titleNode); + } + + if (description) { + const descNode = document.createElement('p'); + descNode.className = 'installer-toast-description typography-text-m-400'; + descNode.textContent = description; + body.appendChild(descNode); + } + + content.appendChild(body); + toast.appendChild(content); + + if (dismissible) { + const close = document.createElement('button'); + close.type = 'button'; + close.className = 'installer-toast-close'; + close.setAttribute('aria-label', 'Dismiss notification'); + close.innerHTML = ICONS.close; + close.addEventListener('click', () => dismissToast(toast)); + toast.appendChild(close); + } + + stack.appendChild(toast); + toast.getBoundingClientRect(); + requestAnimationFrame(() => { + toast.classList.remove('is-entering'); + }); + + if (timeout > 0) { + setTimeout(() => dismissToast(toast), timeout); + } + }; + + window.InstallerToast = Object.freeze({ + showToast + }); +})(); diff --git a/app/views/install/installer/js/modules/ui.js b/app/views/install/installer/js/modules/ui.js new file mode 100644 index 0000000000..bde4cb7c44 --- /dev/null +++ b/app/views/install/installer/js/modules/ui.js @@ -0,0 +1,281 @@ +(() => { + const { TIMINGS } = window.InstallerStepsContext || {}; + const { formState } = window.InstallerStepsState || {}; + + const clearFieldErrors = (root) => { + if (!root) return; + root.querySelectorAll('.field-error').forEach((node) => { + node.classList.remove('is-visible'); + }); + root.querySelectorAll('.input-field.is-error, .input-action.is-error').forEach((node) => { + node.classList.remove('is-error'); + }); + root.querySelectorAll('.field-helper').forEach((helper) => { + helper.style.display = ''; + }); + }; + + const setFieldError = (input, message) => { + if (!input) return; + const group = input.closest('.input-group'); + if (!group) return; + let error = group.querySelector('.field-error'); + let errorText = error?.querySelector('.field-error-text'); + const hasSameMessage = Boolean(errorText && errorText.textContent === message); + const alreadyVisible = Boolean(error && error.classList.contains('is-visible')); + + if (hasSameMessage && alreadyVisible) { + return; + } + + if (!error) { + const template = document.getElementById('field-error-template'); + if (template && template.content) { + const fragment = template.content.cloneNode(true); + error = fragment.querySelector('.field-error'); + group.appendChild(fragment); + } + errorText = error?.querySelector('.field-error-text'); + } + if (errorText) { + errorText.textContent = message; + } + + if (!alreadyVisible) { + requestAnimationFrame(() => { + error.classList.add('is-visible'); + }); + } + + input.classList.add('is-error'); + const actionWrapper = input.closest('.input-action'); + if (actionWrapper) { + actionWrapper.classList.add('is-error'); + } + const helper = group.querySelector('.field-helper'); + if (helper) { + helper.style.display = 'none'; + } + }; + + const bindErrorClear = (input) => { + if (!input) return; + const handler = () => { + const group = input.closest('.input-group'); + const error = group?.querySelector('.field-error'); + if (error) { + error.classList.remove('is-visible'); + } + input.classList.remove('is-error'); + const actionWrapper = input.closest('.input-action'); + if (actionWrapper) { + actionWrapper.classList.remove('is-error'); + } + const helper = group?.querySelector('.field-helper'); + if (helper) { + helper.style.display = ''; + } + }; + input.addEventListener('input', handler); + input.addEventListener('change', handler); + }; + + const toDatabaseLabel = (value) => { + if (!value) return ''; + const lower = value.toLowerCase(); + if (lower === 'mariadb') return 'MariaDB'; + if (lower === 'postgresql') return 'PostgreSQL'; + return 'MongoDB'; + }; + + const updateDatabaseSelection = (radio, root) => { + if (!radio || !root) return; + const allOptions = root.querySelectorAll('.selector-card'); + allOptions.forEach((option) => option.classList.remove('selected')); + const selectedOption = radio.closest('.selector-card'); + if (selectedOption) { + selectedOption.classList.add('selected'); + } + }; + + const syncResetButton = (input, button) => { + const defaultValue = input.dataset.default ?? ''; + button.disabled = input.value === defaultValue; + }; + + const setupResetButtons = (root) => { + const inputs = root.querySelectorAll('.input-field[data-default]'); + inputs.forEach((input) => { + const button = root.querySelector(`[data-reset-target="${input.id}"]`); + if (!button) return; + + syncResetButton(input, button); + + input.addEventListener('input', () => syncResetButton(input, button)); + button.addEventListener('click', () => { + input.value = input.dataset.default ?? ''; + syncResetButton(input, button); + input.dispatchEvent(new Event('input', { bubbles: true })); + }); + }); + }; + + const toggleAccordion = (button) => { + const content = button.nextElementSibling; + const icon = button.querySelector('.accordion-chevron'); + const isOpen = button.classList.contains('is-open'); + + button.classList.toggle('is-open', !isOpen); + button.setAttribute('aria-expanded', String(!isOpen)); + + if (content) { + if (!isOpen) { + content.classList.add('open'); + content.style.maxHeight = `${content.scrollHeight}px`; + } else { + content.style.maxHeight = '0px'; + content.classList.remove('open'); + } + } + + if (icon) { + icon.setAttribute('data-open', String(!isOpen)); + } + }; + + const setupAccordion = (root) => { + const buttons = root.querySelectorAll('.accordion-toggle'); + buttons.forEach((button) => { + button.addEventListener('click', () => toggleAccordion(button)); + }); + }; + + const openAccordion = (root) => { + const toggle = root.querySelector('.accordion-toggle'); + const content = root.querySelector('.accordion-content'); + if (!toggle || !content) return; + if (!toggle.classList.contains('is-open')) { + toggle.classList.add('is-open'); + toggle.setAttribute('aria-expanded', 'true'); + content.classList.add('open'); + content.style.maxHeight = `${content.scrollHeight}px`; + } + }; + + const disableControls = (root) => { + const inputs = root.querySelectorAll('input, select, textarea'); + inputs.forEach((input) => { + if (input.type === 'radio' || input.type === 'checkbox') { + input.disabled = true; + } else { + input.readOnly = true; + input.setAttribute('aria-disabled', 'true'); + } + }); + + const buttons = root.querySelectorAll('button'); + buttons.forEach((button) => { + if (button.matches('[data-copy-target]')) return; + button.disabled = true; + button.setAttribute('aria-disabled', 'true'); + }); + + root.classList.add('is-locked'); + }; + + const generateSecretKey = () => { + const array = new Uint8Array(32); + window.crypto.getRandomValues(array); + return Array.from(array, (byte) => byte.toString(16).padStart(2, '0')).join(''); + }; + + const copyToClipboard = (value, input) => { + if (!value) return; + if (navigator.clipboard && navigator.clipboard.writeText) { + navigator.clipboard.writeText(value); + return; + } + if (input) { + input.select(); + document.execCommand('copy'); + input.setSelectionRange(0, 0); + return; + } + const textArea = document.createElement('textarea'); + textArea.value = value; + textArea.style.position = 'fixed'; + textArea.style.top = '-9999px'; + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + try { + document.execCommand('copy'); + } catch (error) {} finally { + document.body.removeChild(textArea); + } + }; + + const setTooltipText = (wrapper, message) => { + if (!wrapper) return; + const tooltip = wrapper.querySelector('.tooltip'); + if (tooltip && message) { + tooltip.textContent = message; + } + }; + + const resetTooltipText = (wrapper) => { + if (!wrapper) return; + const defaultText = wrapper.dataset.tooltipDefault; + if (!defaultText) return; + setTooltipText(wrapper, defaultText); + }; + + const updateReviewSummary = (root) => { + if (!root) return; + const valueNodes = root.querySelectorAll('[data-review-value]'); + valueNodes.forEach((node) => { + const key = node.dataset.reviewValue; + if (!key) return; + let value = formState?.[key]; + if (key === 'database') { + value = toDatabaseLabel(formState?.database); + } + if (value) { + node.textContent = value; + } + }); + + const badge = root.querySelector('[data-review-badge]'); + if (badge) { + const hasKey = Boolean((formState?.opensslKey || '').trim()); + badge.textContent = hasKey ? 'Generated' : 'Missing'; + badge.classList.remove('badge-success', 'badge-warning'); + badge.classList.add(hasKey ? 'badge-success' : 'badge-warning'); + } + + const assistantBadge = root.querySelector('[data-review-assistant-badge]'); + if (assistantBadge) { + const hasAssistantKey = Boolean((formState?.assistantOpenAIKey || '').trim()); + assistantBadge.textContent = hasAssistantKey ? 'Enabled' : 'Disabled'; + assistantBadge.classList.remove('badge-success', 'badge-neutral'); + assistantBadge.classList.add(hasAssistantKey ? 'badge-success' : 'badge-neutral'); + } + }; + + window.InstallerStepsUI = { + clearFieldErrors, + setFieldError, + bindErrorClear, + toDatabaseLabel, + updateDatabaseSelection, + setupResetButtons, + setupAccordion, + openAccordion, + disableControls, + generateSecretKey, + copyToClipboard, + setTooltipText, + resetTooltipText, + updateReviewSummary + }; +})(); diff --git a/app/views/install/installer/js/modules/validation.js b/app/views/install/installer/js/modules/validation.js new file mode 100644 index 0000000000..13ab60ef4e --- /dev/null +++ b/app/views/install/installer/js/modules/validation.js @@ -0,0 +1,117 @@ +(() => { + const isValidEmail = (email) => { + if (!email) return false; + const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + return re.test(email); + }; + + const isValidPort = (value) => { + const numeric = Number(value); + if (!Number.isInteger(numeric)) return false; + return numeric >= 1 && numeric <= 65535; + }; + + const isValidPassword = (value) => { + if (!value) return false; + return value.length >= 8 && /\S/.test(value); + }; + + const isValidIPv4 = (host) => { + if (!/^\d{1,3}(\.\d{1,3}){3}$/.test(host)) return false; + return host.split('.').every((part) => { + const num = Number(part); + return num >= 0 && num <= 255; + }); + }; + + const isValidIPv6 = (host) => { + try { + const url = new URL(`http://[${host}]`); + return url.hostname.toLowerCase() === host.toLowerCase(); + } catch (error) { + return false; + } + }; + + const isValidHostnameLabel = (label) => { + if (!label || label.length > 63) return false; + if (label.startsWith('-') || label.endsWith('-')) return false; + return /^[a-zA-Z0-9-]+$/.test(label); + }; + + const isValidDomain = (host) => { + if (host.length > 253) return false; + const labels = host.split('.'); + return labels.every((label) => isValidHostnameLabel(label)); + }; + + const isValidHost = (host) => { + if (host === 'localhost') return true; + if (isValidIPv4(host)) return true; + if (isValidIPv6(host)) return true; + return isValidDomain(host); + }; + + const isValidHostnameInput = (value) => { + if (!value) return false; + const trimmed = value.trim(); + if (!trimmed) return false; + + let host = trimmed; + let port = null; + + if (trimmed.startsWith('[')) { + const match = trimmed.match(/^\[([^\]]+)\](?::(\d+))?$/); + if (!match) return false; + host = match[1] || ''; + port = match[2] || null; + } else { + const parts = trimmed.split(':'); + if (parts.length > 2) return false; + if (parts.length === 2) { + host = parts[0]; + port = parts[1]; + } + } + + if (port !== null && port !== '' && !isValidPort(port)) { + return false; + } + + return isValidHost(host); + }; + + const extractHostname = (value) => { + if (!value) return ''; + const trimmed = value.trim(); + if (trimmed.startsWith('[')) { + const end = trimmed.indexOf(']'); + if (end !== -1) { + return trimmed.slice(1, end); + } + return trimmed; + } + const colonCount = (trimmed.match(/:/g) || []).length; + if (colonCount === 1) { + return trimmed.split(':')[0]; + } + return trimmed; + }; + + const LOCAL_HOSTS = new Set(['localhost', '127.0.0.1', '::1', '0.0.0.0']); + + const isLocalHost = (host) => { + if (!host) return false; + const normalized = host.toLowerCase(); + return LOCAL_HOSTS.has(normalized); + }; + + window.InstallerStepsValidation = { + isValidEmail, + isValidPort, + isValidPassword, + isValidHostnameInput, + extractHostname, + isLocalHost + }; +})(); diff --git a/app/views/install/installer/js/steps.js b/app/views/install/installer/js/steps.js new file mode 100644 index 0000000000..2a71d075cc --- /dev/null +++ b/app/views/install/installer/js/steps.js @@ -0,0 +1,451 @@ +(() => { + const Context = window.InstallerStepsContext || {}; + const State = window.InstallerStepsState || {}; + const Validation = window.InstallerStepsValidation || {}; + const UI = window.InstallerStepsUI || {}; + const Progress = window.InstallerStepsProgress || {}; + const Tooltips = window.InstallerTooltips || null; + + const { + INSTALLATION_STEPS, + clampStep, + isUpgradeMode, + getEnabledDatabases + } = Context; + + const { + formState, + dispatchStateChange, + applyBodyDefaults, + applyLockPayload, + clearInstallLock, + clearInstallId, + isInstallLocked, + syncInstallLockFlag, + getInstallLock, + getLockedDatabase + } = State; + + const { + isValidEmail, + isValidPort, + isValidHostnameInput, + isValidPassword + } = Validation; + + const { + clearFieldErrors, + setFieldError, + bindErrorClear, + updateDatabaseSelection, + setupResetButtons, + setupAccordion, + openAccordion, + disableControls, + generateSecretKey, + copyToClipboard, + setTooltipText, + resetTooltipText, + updateReviewSummary + } = UI; + + let reviewListener = null; + + const bindInputToState = (input, key) => { + if (!input) return; + const update = () => { + formState[key] = input.value; + dispatchStateChange?.(key); + }; + input.addEventListener('input', update); + input.addEventListener('change', update); + update(); + }; + + const lockDatabaseSelection = (root, lockedDatabase) => { + if (lockedDatabase) { + const radios = root.querySelectorAll('input[name="database"]'); + radios.forEach((radio) => { + const isLockedChoice = radio.value === lockedDatabase; + const card = radio.closest('.selector-card'); + radio.disabled = !isLockedChoice; + if (card) { + card.classList.toggle('is-disabled', !isLockedChoice); + } + if (isLockedChoice) { + radio.checked = true; + updateDatabaseSelection?.(radio, root); + } + }); + } + }; + + const applyEnabledDatabases = (root) => { + const enabled = getEnabledDatabases?.() || []; + const radios = root.querySelectorAll('input[name="database"]'); + radios.forEach((radio) => { + if (!enabled.includes(radio.value)) { + const card = radio.closest('.selector-card'); + if (card) { + card.remove(); + } + } + }); + }; + + const bindDatabaseSelection = (root) => { + const radios = root.querySelectorAll('input[name="database"]'); + radios.forEach((radio) => { + radio.addEventListener('change', () => { + formState.database = radio.value; + updateDatabaseSelection?.(radio, root); + }); + }); + }; + + const hydrateStep1State = (root) => { + State.setStateIfEmpty?.('appDomain', root.querySelector('#hostname')?.value); + State.setStateIfEmpty?.('database', root.querySelector('input[name="database"]:checked')?.value); + State.setStateIfEmpty?.('httpPort', root.querySelector('#http-port')?.value); + State.setStateIfEmpty?.('httpsPort', root.querySelector('#https-port')?.value); + State.setStateIfEmpty?.('emailCertificates', root.querySelector('#ssl-email')?.value); + State.setStateIfEmpty?.('assistantOpenAIKey', root.querySelector('#assistant-openai-key')?.value); + }; + + const applyStep1State = (root) => { + const hostname = root.querySelector('#hostname'); + if (hostname && formState.appDomain) hostname.value = formState.appDomain; + + const httpPort = root.querySelector('#http-port'); + if (httpPort && formState.httpPort) httpPort.value = formState.httpPort; + + const httpsPort = root.querySelector('#https-port'); + if (httpsPort && formState.httpsPort) httpsPort.value = formState.httpsPort; + + const sslEmail = root.querySelector('#ssl-email'); + if (sslEmail && formState.emailCertificates) sslEmail.value = formState.emailCertificates; + + const assistantKey = root.querySelector('#assistant-openai-key'); + if (assistantKey && formState.assistantOpenAIKey) { + assistantKey.value = formState.assistantOpenAIKey; + } + + if (formState.database) { + const radio = root.querySelector(`input[name="database"][value="${formState.database}"]`); + if (radio) { + radio.checked = true; + updateDatabaseSelection?.(radio, root); + } + } + }; + + const initStep1 = (root) => { + if (!root) return; + syncInstallLockFlag?.(); + applyLockPayload?.(); + applyBodyDefaults?.(); + hydrateStep1State(root); + applyStep1State(root); + + if (isInstallLocked?.()) { + openAccordion?.(root); + disableControls?.(root); + return; + } + + applyEnabledDatabases(root); + + const lockedDatabase = getLockedDatabase?.() || ''; + if (lockedDatabase) { + lockDatabaseSelection(root, lockedDatabase); + } else { + bindDatabaseSelection(root); + } + + const hostname = root.querySelector('#hostname'); + const httpPort = root.querySelector('#http-port'); + const httpsPort = root.querySelector('#https-port'); + const sslEmail = root.querySelector('#ssl-email'); + const assistantKey = root.querySelector('#assistant-openai-key'); + + bindInputToState(hostname, 'appDomain'); + bindInputToState(httpPort, 'httpPort'); + bindInputToState(httpsPort, 'httpsPort'); + bindInputToState(sslEmail, 'emailCertificates'); + bindInputToState(assistantKey, 'assistantOpenAIKey'); + + bindErrorClear?.(hostname); + bindErrorClear?.(httpPort); + bindErrorClear?.(httpsPort); + bindErrorClear?.(sslEmail); + bindErrorClear?.(assistantKey); + + const checked = root.querySelector('input[name="database"]:checked'); + if (checked) { + updateDatabaseSelection?.(checked, root); + } + + setupResetButtons?.(root); + setupAccordion?.(root); + Tooltips?.setupTooltipPortals?.(root); + }; + + const hydrateStep2State = (root) => { + const value = root.querySelector('#secret-key')?.value; + if (formState.opensslKey) return; + if (value) { + formState.opensslKey = value; + } + }; + + const applyStep2State = (root) => { + const input = root.querySelector('#secret-key'); + if (input && formState.opensslKey) { + input.value = formState.opensslKey; + } + }; + + const initStep2 = (root) => { + if (!root) return; + syncInstallLockFlag?.(); + applyLockPayload?.(); + applyBodyDefaults?.(); + hydrateStep2State(root); + if (!isUpgradeMode?.() && (!formState.opensslKey || !formState.opensslKey.trim())) { + formState.opensslKey = generateSecretKey?.(); + dispatchStateChange?.('opensslKey'); + } + applyStep2State(root); + + const input = root.querySelector('#secret-key'); + if (input) { + bindInputToState(input, 'opensslKey'); + bindErrorClear?.(input); + } + + const copyButton = root.querySelector('[data-copy-target]'); + const tooltipWrapper = copyButton?.closest('.tooltip-wrapper'); + + if (tooltipWrapper) { + tooltipWrapper.addEventListener('mouseenter', () => resetTooltipText?.(tooltipWrapper)); + tooltipWrapper.addEventListener('focusin', () => resetTooltipText?.(tooltipWrapper)); + } + + if (copyButton) { + copyButton.addEventListener('click', () => { + const targetId = copyButton.getAttribute('data-copy-target'); + const targetInput = targetId ? root.querySelector(`#${targetId}`) : null; + const value = targetInput?.value || ''; + copyToClipboard?.(value, targetInput); + copyButton.blur(); + + if (tooltipWrapper) { + const successText = tooltipWrapper.dataset.tooltipSuccess || 'Copied'; + setTooltipText?.(tooltipWrapper, successText); + } + }); + } + + const regenerateButton = root.querySelector('[data-regenerate-target]'); + if (regenerateButton && !isInstallLocked?.()) { + regenerateButton.addEventListener('click', () => { + const targetId = regenerateButton.getAttribute('data-regenerate-target'); + const targetInput = targetId ? root.querySelector(`#${targetId}`) : null; + if (!targetInput) return; + regenerateButton.classList.remove('is-rotating'); + void regenerateButton.offsetWidth; + regenerateButton.classList.add('is-rotating'); + const handleAnimationEnd = () => { + regenerateButton.classList.remove('is-rotating'); + }; + regenerateButton.addEventListener('animationend', handleAnimationEnd, { once: true }); + targetInput.value = generateSecretKey?.(); + targetInput.dispatchEvent(new Event('input', { bubbles: true })); + }); + } + + if (isInstallLocked?.()) { + disableControls?.(root); + } + }; + + const hydrateStep3State = (root) => { + State.setStateIfEmpty?.('accountEmail', root.querySelector('#account-email')?.value); + State.setStateIfEmpty?.('accountPassword', root.querySelector('#account-password')?.value); + }; + + const applyStep3State = (root) => { + const email = root.querySelector('#account-email'); + if (email && formState.accountEmail) email.value = formState.accountEmail; + + const password = root.querySelector('#account-password'); + if (password && formState.accountPassword) password.value = formState.accountPassword; + }; + + const initStep3 = (root) => { + if (!root) return; + syncInstallLockFlag?.(); + applyLockPayload?.(); + applyBodyDefaults?.(); + hydrateStep3State(root); + applyStep3State(root); + + const email = root.querySelector('#account-email'); + const password = root.querySelector('#account-password'); + const passwordToggle = root.querySelector('[data-password-toggle="account-password"]'); + + bindInputToState(email, 'accountEmail'); + bindInputToState(password, 'accountPassword'); + + bindErrorClear?.(email); + bindErrorClear?.(password); + + if (password && passwordToggle) { + passwordToggle.addEventListener('click', () => { + const isVisible = passwordToggle.classList.toggle('is-visible'); + password.type = isVisible ? 'text' : 'password'; + passwordToggle.setAttribute('aria-label', isVisible ? 'Hide password' : 'Show password'); + }); + } + + if (isInstallLocked?.()) { + disableControls?.(root); + } + }; + + const initStep4 = (root) => { + if (!root) return; + syncInstallLockFlag?.(); + applyLockPayload?.(); + applyBodyDefaults?.(); + updateReviewSummary?.(root); + if (reviewListener) { + document.removeEventListener('installer:state-change', reviewListener); + } + reviewListener = () => updateReviewSummary?.(root); + document.addEventListener('installer:state-change', reviewListener); + if (isInstallLocked?.()) { + disableControls?.(root); + } + }; + + const initStep = (step, container) => { + if (!container) return; + const root = container.querySelector('.step-layout') || container; + const normalized = clampStep?.(step) ?? 1; + Tooltips?.cleanupTooltipPortals?.(); + if (normalized !== 4 && reviewListener) { + document.removeEventListener('installer:state-change', reviewListener); + reviewListener = null; + } + if (normalized !== 5) { + Progress.cleanupInstallFlow?.(); + } + if (normalized === 1) initStep1(root); + if (normalized === 2) initStep2(root); + if (normalized === 3) initStep3(root); + if (normalized === 4) initStep4(root); + if (normalized === 5) Progress.initStep5?.(root); + }; + + window.InstallerSteps = { + initStep1, + initStep2, + initStep3, + initStep4, + initStep5: Progress.initStep5, + installationSteps: INSTALLATION_STEPS || [], + isInstallLocked, + getInstallLock, + clearInstallLock, + initStep, + validateStep: (step, container) => { + const root = container?.querySelector('.step-layout') || container; + const normalized = clampStep?.(step) ?? 1; + if (normalized === 1) { + clearFieldErrors?.(root); + let valid = true; + const hostname = root?.querySelector('#hostname'); + const httpPort = root?.querySelector('#http-port'); + const httpsPort = root?.querySelector('#https-port'); + const sslEmail = root?.querySelector('#ssl-email'); + + if (!hostname || !hostname.value.trim()) { + setFieldError?.(hostname, 'Please enter your Appwrite hostname'); + valid = false; + } else if (!isValidHostnameInput?.(hostname.value.trim())) { + setFieldError?.(hostname, 'Please enter a valid hostname'); + valid = false; + } + + const parsePort = (input, label) => { + const value = input?.value; + if (!value || !isValidPort?.(value)) { + setFieldError?.(input, `Please enter a valid ${label} port (1-65535)`); + return false; + } + return true; + }; + + if (!parsePort(httpPort, 'HTTP')) valid = false; + if (!parsePort(httpsPort, 'HTTPS')) valid = false; + + if (!sslEmail || !sslEmail.value.trim()) { + setFieldError?.(sslEmail, 'Please enter an email address for SSL certificates'); + valid = false; + } else if (!isValidEmail?.(sslEmail.value.trim())) { + setFieldError?.(sslEmail, 'Please enter a valid email address'); + valid = false; + } + + if (!valid) { + openAccordion?.(root); + } + + return valid; + } + + if (normalized === 2) { + clearFieldErrors?.(root); + const secretKey = root?.querySelector('#secret-key'); + const secretValue = secretKey?.value.trim() || ''; + if (!secretKey || !secretValue) { + setFieldError?.(secretKey, 'Please enter or generate a secret API key'); + return false; + } + if (secretValue.length > 64) { + setFieldError?.(secretKey, 'Secret API key must be 1-64 characters'); + return false; + } + } + + if (normalized === 3) { + clearFieldErrors?.(root); + let valid = true; + const email = root?.querySelector('#account-email'); + const password = root?.querySelector('#account-password'); + + if (!email || !email.value.trim()) { + setFieldError?.(email, 'This field is required'); + valid = false; + } else if (!isValidEmail?.(email.value.trim())) { + setFieldError?.(email, 'Please enter a valid email address'); + valid = false; + } + + const passwordValue = password?.value ?? ''; + if (!password || !/\S/.test(passwordValue)) { + setFieldError?.(password, 'This field is required'); + valid = false; + } else if (!isValidPassword?.(passwordValue)) { + setFieldError?.(password, 'Password must be at least 8 characters long'); + valid = false; + } + + return valid; + } + + return true; + } + }; +})(); diff --git a/app/views/install/installer/js/tooltips.js b/app/views/install/installer/js/tooltips.js new file mode 100644 index 0000000000..96b637b9a3 --- /dev/null +++ b/app/views/install/installer/js/tooltips.js @@ -0,0 +1,77 @@ +(() => { + const tooltipPortals = new Set(); + + const positionTooltipPortal = (tooltip, anchor) => { + if (!tooltip || !anchor) return; + const rect = anchor.getBoundingClientRect(); + const tooltipRect = tooltip.getBoundingClientRect(); + const offset = Number(tooltip.dataset.tooltipOffset || 6); + const padding = 8; + let left = rect.left + (rect.width / 2) - (tooltipRect.width / 2); + left = Math.max(padding, Math.min(left, window.innerWidth - tooltipRect.width - padding)); + const top = rect.bottom + offset; + tooltip.style.left = `${left}px`; + tooltip.style.top = `${top}px`; + }; + + const attachTooltipPortal = (tooltip) => { + if (!tooltip || tooltip.dataset.portalInitialized === 'true') return; + const anchor = tooltip.parentElement; + if (!anchor) return; + + tooltip.dataset.portalInitialized = 'true'; + tooltip.classList.add('tooltip-portal'); + document.body.appendChild(tooltip); + + const show = () => { + tooltip.classList.add('is-open'); + positionTooltipPortal(tooltip, anchor); + }; + const hide = () => { + tooltip.classList.remove('is-open'); + }; + const refresh = () => { + if (tooltip.classList.contains('is-open')) { + positionTooltipPortal(tooltip, anchor); + } + }; + + anchor.addEventListener('mouseenter', show); + anchor.addEventListener('mouseleave', hide); + anchor.addEventListener('focusin', show); + anchor.addEventListener('focusout', hide); + window.addEventListener('scroll', refresh, true); + window.addEventListener('resize', refresh); + + tooltipPortals.add({ + tooltip, + cleanup: () => { + anchor.removeEventListener('mouseenter', show); + anchor.removeEventListener('mouseleave', hide); + anchor.removeEventListener('focusin', show); + anchor.removeEventListener('focusout', hide); + window.removeEventListener('scroll', refresh, true); + window.removeEventListener('resize', refresh); + if (tooltip.parentElement) { + tooltip.parentElement.removeChild(tooltip); + } + } + }); + }; + + const setupTooltipPortals = (root) => { + if (!root) return; + const portalTooltips = root.querySelectorAll('.tooltip[data-tooltip-portal]'); + portalTooltips.forEach((tooltip) => attachTooltipPortal(tooltip)); + }; + + const cleanupTooltipPortals = () => { + tooltipPortals.forEach((entry) => entry.cleanup()); + tooltipPortals.clear(); + }; + + window.InstallerTooltips = { + setupTooltipPortals, + cleanupTooltipPortals + }; +})(); diff --git a/app/views/install/installer/templates/steps/step-1.phtml b/app/views/install/installer/templates/steps/step-1.phtml new file mode 100644 index 0000000000..8f4a726158 --- /dev/null +++ b/app/views/install/installer/templates/steps/step-1.phtml @@ -0,0 +1,194 @@ + +
+
+
+

+

+ +

+
+ +
+
+ + +
+ +
+ +
+ + + + + + + + + + + +
+
+ +
+ +
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+
+
+
+
+
+ +
diff --git a/app/views/install/installer/templates/steps/step-2.phtml b/app/views/install/installer/templates/steps/step-2.phtml new file mode 100644 index 0000000000..9b7eed11b1 --- /dev/null +++ b/app/views/install/installer/templates/steps/step-2.phtml @@ -0,0 +1,58 @@ + +
+
+
+

Secure your app

+

+ +

+
+ +
+
+
+ +
+
Save your key
+
You won't be able to see this key again. Copy it somewhere safe before continuing.
+
+
+
+ +
+
+ +
+ +
+ + + Copy + +
+
+
+ +
+
+
+ +
diff --git a/app/views/install/installer/templates/steps/step-3.phtml b/app/views/install/installer/templates/steps/step-3.phtml new file mode 100644 index 0000000000..8eaf0e044b --- /dev/null +++ b/app/views/install/installer/templates/steps/step-3.phtml @@ -0,0 +1,61 @@ + +
+
+
+

Create your account

+

+ Set up the email and password for your Appwrite account. You can use these + credentials to sign in later. +

+
+ +
+
+ + +
+ +
+ +
+ +
+ +
+
+
+ + + + Password must be at least 8 characters long +
+
+
+
+
diff --git a/app/views/install/installer/templates/steps/step-4.phtml b/app/views/install/installer/templates/steps/step-4.phtml new file mode 100644 index 0000000000..07dc865257 --- /dev/null +++ b/app/views/install/installer/templates/steps/step-4.phtml @@ -0,0 +1,76 @@ + 'MariaDB', + 'postgresql' => 'PostgreSQL', + default => 'MongoDB', +}; +$badgeLabel = $defaultSecretKey !== '' ? 'Generated' : 'Missing'; +$badgeClass = $defaultSecretKey !== '' ? 'badge-success' : 'badge-warning'; +?> +
+
+
+

+

+ +

+
+ +
+
+
+
+
+ +
+
Hostname
+
+
+
+ +
+
Database
+
+
+
+ +
+
HTTP port
+
+
+
+ +
+
HTTPS port
+
+
+
+ +
+
SSL certificate email
+
+
+ Disabled +
Appwrite Assistant
+
+
+ + + +
Secret API key
+
+
+
+
+
+ +
diff --git a/app/views/install/installer/templates/steps/step-5.phtml b/app/views/install/installer/templates/steps/step-5.phtml new file mode 100644 index 0000000000..8fa810b259 --- /dev/null +++ b/app/views/install/installer/templates/steps/step-5.phtml @@ -0,0 +1,53 @@ + +
+
+
+
+
+ +
+
+
+
+
+ + +
diff --git a/app/worker.php b/app/worker.php index b591064280..6b16989df3 100644 --- a/app/worker.php +++ b/app/worker.php @@ -111,7 +111,7 @@ Server::setResource('dbForProject', function (Cache $cache, Registry $register, if (\in_array($dsn->getHost(), $sharedTables)) { $database ->setSharedTables(true) - ->setTenant((int) $project->getSequence()) + ->setTenant($project->getSequence()) ->setNamespace($dsn->getParam('namespace')); } else { $database @@ -151,7 +151,7 @@ Server::setResource('getProjectDB', function (Group $pools, Database $dbForPlatf if (\in_array($dsn->getHost(), $sharedTables)) { $database ->setSharedTables(true) - ->setTenant((int) $project->getSequence()) + ->setTenant($project->getSequence()) ->setNamespace($dsn->getParam('namespace')); } else { $database @@ -173,7 +173,7 @@ Server::setResource('getProjectDB', function (Group $pools, Database $dbForPlatf if (\in_array($dsn->getHost(), $sharedTables)) { $database ->setSharedTables(true) - ->setTenant((int) $project->getSequence()) + ->setTenant($project->getSequence()) ->setNamespace($dsn->getParam('namespace')); } else { $database @@ -195,9 +195,8 @@ Server::setResource('getLogsDB', function (Group $pools, Cache $cache, Authoriza $database = null; return function (?Document $project = null) use ($pools, $cache, $database, $authorization) { - if ($database !== null && $project !== null && ! $project->isEmpty() && $project->getId() !== 'console') { - $database->setTenant((int) $project->getSequence()); - + if ($database !== null && $project !== null && !$project->isEmpty() && $project->getId() !== 'console') { + $database->setTenant($project->getSequence()); return $database; } @@ -212,9 +211,8 @@ Server::setResource('getLogsDB', function (Group $pools, Cache $cache, Authoriza ->setTimeout(APP_DATABASE_TIMEOUT_MILLISECONDS_WORKER) ->setMaxQueryValues(APP_DATABASE_QUERY_MAX_VALUES_WORKER); - // set tenant - if ($project !== null && ! $project->isEmpty() && $project->getId() !== 'console') { - $database->setTenant((int) $project->getSequence()); + if ($project !== null && !$project->isEmpty() && $project->getId() !== 'console') { + $database->setTenant($project->getSequence()); } return $database; diff --git a/composer.json b/composer.json index 057118645e..2448a55522 100644 --- a/composer.json +++ b/composer.json @@ -13,8 +13,11 @@ "test": "vendor/bin/phpunit", "lint": "vendor/bin/pint --test --config pint.json", "format": "vendor/bin/pint --config pint.json", + "analyze": "./vendor/bin/phpstan analyse -c phpstan.neon --memory-limit=1G", "bench": "vendor/bin/phpbench run --report=benchmark", - "analyze": "./vendor/bin/phpstan analyse -c phpstan.neon --memory-limit=1G" + "check": "./vendor/bin/phpstan analyse -c phpstan.neon", + "installer:clean": "php src/Appwrite/Platform/Installer/Server.php --clean", + "installer:dev": "docker compose build && composer installer:clean && php src/Appwrite/Platform/Installer/Server.php --docker" }, "autoload": { "psr-4": { @@ -91,8 +94,15 @@ "spomky-labs/otphp": "11.*", "webonyx/graphql-php": "14.11.*", "league/csv": "9.14.*", - "enshrined/svg-sanitize": "0.22.*" + "enshrined/svg-sanitize": "0.22.*", + "utopia-php/di": "0.1.0" }, + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/utopia-php/database" + } + ], "require-dev": { "ext-fileinfo": "*", "appwrite/sdk-generator": "*", @@ -102,9 +112,14 @@ "phpstan/phpstan": "^2.0", "textalk/websocket": "1.5.*", "czproject/git-php": "4.*", - "laravel/pint": "1.*", - "phpbench/phpbench": "1.*" + "laravel/pint": "1.*" }, + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/utopia-php/database" + } + ], "provide": { "ext-phpiredis": "*" }, diff --git a/composer.lock b/composer.lock index c9128f3a1f..50b317c811 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "392d5bd2621b3eb57f8b1bf38d9e4bc3", + "content-hash": "1404c8821e43b3fe92e06a8ed658ed26", "packages": [ { "name": "adhocore/jwt", @@ -686,23 +686,23 @@ }, { "name": "google/protobuf", - "version": "v4.33.5", + "version": "v4.33.6", "source": { "type": "git", "url": "https://github.com/protocolbuffers/protobuf-php.git", - "reference": "ebe8010a61b2ae0cff0d246fe1c4d44e9f7dfa6d" + "reference": "84b008c23915ed94536737eae46f41ba3bccfe67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/protocolbuffers/protobuf-php/zipball/ebe8010a61b2ae0cff0d246fe1c4d44e9f7dfa6d", - "reference": "ebe8010a61b2ae0cff0d246fe1c4d44e9f7dfa6d", + "url": "https://api.github.com/repos/protocolbuffers/protobuf-php/zipball/84b008c23915ed94536737eae46f41ba3bccfe67", + "reference": "84b008c23915ed94536737eae46f41ba3bccfe67", "shasum": "" }, "require": { "php": ">=8.1.0" }, "require-dev": { - "phpunit/phpunit": ">=5.0.0 <8.5.27" + "phpunit/phpunit": ">=10.5.62 <11.0.0" }, "suggest": { "ext-bcmath": "Need to support JSON deserialization" @@ -724,9 +724,9 @@ "proto" ], "support": { - "source": "https://github.com/protocolbuffers/protobuf-php/tree/v4.33.5" + "source": "https://github.com/protocolbuffers/protobuf-php/tree/v4.33.6" }, - "time": "2026-01-29T20:49:00+00:00" + "time": "2026-03-18T17:32:05+00:00" }, { "name": "halaxa/json-machine", @@ -1996,16 +1996,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.49", + "version": "3.0.50", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "6233a1e12584754e6b5daa69fe1289b47775c1b9" + "reference": "aa6ad8321ed103dc3624fb600a25b66ebf78ec7b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/6233a1e12584754e6b5daa69fe1289b47775c1b9", - "reference": "6233a1e12584754e6b5daa69fe1289b47775c1b9", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/aa6ad8321ed103dc3624fb600a25b66ebf78ec7b", + "reference": "aa6ad8321ed103dc3624fb600a25b66ebf78ec7b", "shasum": "" }, "require": { @@ -2086,7 +2086,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.49" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.50" }, "funding": [ { @@ -2102,7 +2102,7 @@ "type": "tidelift" } ], - "time": "2026-01-27T09:17:28+00:00" + "time": "2026-03-19T02:57:58+00:00" }, { "name": "psr/clock", @@ -3606,16 +3606,16 @@ }, { "name": "utopia-php/cache", - "version": "1.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/utopia-php/cache.git", - "reference": "7068870c086a6aea16173563a26b93ef3e408439" + "reference": "05ceba981436a4022553f7aaa2a05fa049d0f71c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/cache/zipball/7068870c086a6aea16173563a26b93ef3e408439", - "reference": "7068870c086a6aea16173563a26b93ef3e408439", + "url": "https://api.github.com/repos/utopia-php/cache/zipball/05ceba981436a4022553f7aaa2a05fa049d0f71c", + "reference": "05ceba981436a4022553f7aaa2a05fa049d0f71c", "shasum": "" }, "require": { @@ -3652,9 +3652,9 @@ ], "support": { "issues": "https://github.com/utopia-php/cache/issues", - "source": "https://github.com/utopia-php/cache/tree/1.0.0" + "source": "https://github.com/utopia-php/cache/tree/1.0.1" }, - "time": "2026-01-28T10:55:44+00:00" + "time": "2026-03-12T03:39:09+00:00" }, { "name": "utopia-php/cli", @@ -3850,16 +3850,16 @@ }, { "name": "utopia-php/database", - "version": "5.3.8", + "version": "5.3.17", "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "4920bb60afb98d4bd81f4d331765716ae1d40255" + "reference": "cff2b6ed63d3291b74110d086e16ff089fe05993" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/4920bb60afb98d4bd81f4d331765716ae1d40255", - "reference": "4920bb60afb98d4bd81f4d331765716ae1d40255", + "url": "https://api.github.com/repos/utopia-php/database/zipball/cff2b6ed63d3291b74110d086e16ff089fe05993", + "reference": "cff2b6ed63d3291b74110d086e16ff089fe05993", "shasum": "" }, "require": { @@ -3868,9 +3868,10 @@ "ext-pdo": "*", "php": ">=8.4", "utopia-php/cache": "1.*", - "utopia-php/framework": "0.33.*", + "utopia-php/console": "0.1.*", "utopia-php/mongo": "1.*", - "utopia-php/pools": "1.*" + "utopia-php/pools": "1.*", + "utopia-php/validators": "0.2.*" }, "require-dev": { "fakerphp/faker": "1.23.*", @@ -3880,7 +3881,7 @@ "phpunit/phpunit": "9.*", "rregeer/phpunit-coverage-check": "0.3.*", "swoole/ide-helper": "5.1.3", - "utopia-php/cli": "0.14.*" + "utopia-php/cli": "0.22.*" }, "type": "library", "autoload": { @@ -3888,7 +3889,38 @@ "Utopia\\Database\\": "src/Database" } }, - "notification-url": "https://packagist.org/downloads/", + "autoload-dev": { + "psr-4": { + "Tests\\E2E\\": "tests/e2e", + "Tests\\Unit\\": "tests/unit" + } + }, + "scripts": { + "build": [ + "Composer\\Config::disableProcessTimeout", + "docker compose build" + ], + "start": [ + "Composer\\Config::disableProcessTimeout", + "docker compose up -d" + ], + "test": [ + "Composer\\Config::disableProcessTimeout", + "docker compose exec tests vendor/bin/phpunit --configuration phpunit.xml" + ], + "lint": [ + "php -d memory_limit=2G ./vendor/bin/pint --test" + ], + "format": [ + "php -d memory_limit=2G ./vendor/bin/pint" + ], + "check": [ + "./vendor/bin/phpstan analyse --level 7 src tests --memory-limit 2G" + ], + "coverage": [ + "./vendor/bin/coverage-check ./tmp/clover.xml 90" + ] + }, "license": [ "MIT" ], @@ -3901,10 +3933,10 @@ "utopia" ], "support": { - "issues": "https://github.com/utopia-php/database/issues", - "source": "https://github.com/utopia-php/database/tree/5.3.8" + "source": "https://github.com/utopia-php/database/tree/5.3.17", + "issues": "https://github.com/utopia-php/database/issues" }, - "time": "2026-03-11T01:03:34+00:00" + "time": "2026-03-20T01:18:52+00:00" }, { "name": "utopia-php/detector", @@ -4058,16 +4090,16 @@ }, { "name": "utopia-php/domains", - "version": "1.0.2", + "version": "1.0.5", "source": { "type": "git", "url": "https://github.com/utopia-php/domains.git", - "reference": "b4896a6746f0fbe29dfd5e32f7790bd94c1af1e6" + "reference": "0edf6bb2b07f30db849a267027077bf5abb994c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/domains/zipball/b4896a6746f0fbe29dfd5e32f7790bd94c1af1e6", - "reference": "b4896a6746f0fbe29dfd5e32f7790bd94c1af1e6", + "url": "https://api.github.com/repos/utopia-php/domains/zipball/0edf6bb2b07f30db849a267027077bf5abb994c6", + "reference": "0edf6bb2b07f30db849a267027077bf5abb994c6", "shasum": "" }, "require": { @@ -4114,9 +4146,9 @@ ], "support": { "issues": "https://github.com/utopia-php/domains/issues", - "source": "https://github.com/utopia-php/domains/tree/1.0.2" + "source": "https://github.com/utopia-php/domains/tree/1.0.5" }, - "time": "2026-02-25T08:18:25+00:00" + "time": "2026-03-03T09:20:50+00:00" }, { "name": "utopia-php/dsn", @@ -4167,16 +4199,16 @@ }, { "name": "utopia-php/emails", - "version": "0.6.8", + "version": "0.6.9", "source": { "type": "git", "url": "https://github.com/utopia-php/emails.git", - "reference": "25dfcd46ed47b862d2a7e7c98d92a3a4680b6f1b" + "reference": "3a59fb392a03a88f5497e5fdb0ea84a252a4dfdf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/emails/zipball/25dfcd46ed47b862d2a7e7c98d92a3a4680b6f1b", - "reference": "25dfcd46ed47b862d2a7e7c98d92a3a4680b6f1b", + "url": "https://api.github.com/repos/utopia-php/emails/zipball/3a59fb392a03a88f5497e5fdb0ea84a252a4dfdf", + "reference": "3a59fb392a03a88f5497e5fdb0ea84a252a4dfdf", "shasum": "" }, "require": { @@ -4222,9 +4254,9 @@ ], "support": { "issues": "https://github.com/utopia-php/emails/issues", - "source": "https://github.com/utopia-php/emails/tree/0.6.8" + "source": "https://github.com/utopia-php/emails/tree/0.6.9" }, - "time": "2026-02-09T12:31:56+00:00" + "time": "2026-03-14T13:52:56+00:00" }, { "name": "utopia-php/fetch", @@ -4572,16 +4604,16 @@ }, { "name": "utopia-php/mongo", - "version": "1.0.0", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/utopia-php/mongo.git", - "reference": "45bedf36c2c946ec7a0a3e59b9f12f772de0b01d" + "reference": "677a21c53f7a1316c528b4b45b3fce886cee7223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/mongo/zipball/45bedf36c2c946ec7a0a3e59b9f12f772de0b01d", - "reference": "45bedf36c2c946ec7a0a3e59b9f12f772de0b01d", + "url": "https://api.github.com/repos/utopia-php/mongo/zipball/677a21c53f7a1316c528b4b45b3fce886cee7223", + "reference": "677a21c53f7a1316c528b4b45b3fce886cee7223", "shasum": "" }, "require": { @@ -4627,9 +4659,9 @@ ], "support": { "issues": "https://github.com/utopia-php/mongo/issues", - "source": "https://github.com/utopia-php/mongo/tree/1.0.0" + "source": "https://github.com/utopia-php/mongo/tree/1.0.2" }, - "time": "2026-02-12T05:54:06+00:00" + "time": "2026-03-18T02:45:50+00:00" }, { "name": "utopia-php/platform", @@ -5059,16 +5091,16 @@ }, { "name": "utopia-php/system", - "version": "0.10.0", + "version": "0.10.1", "source": { "type": "git", "url": "https://github.com/utopia-php/system.git", - "reference": "6441a9c180958a373e5ddb330264dd638539dfdb" + "reference": "7c1669533bb9c285de19191270c8c1439161a78a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/system/zipball/6441a9c180958a373e5ddb330264dd638539dfdb", - "reference": "6441a9c180958a373e5ddb330264dd638539dfdb", + "url": "https://api.github.com/repos/utopia-php/system/zipball/7c1669533bb9c285de19191270c8c1439161a78a", + "reference": "7c1669533bb9c285de19191270c8c1439161a78a", "shasum": "" }, "require": { @@ -5109,9 +5141,9 @@ ], "support": { "issues": "https://github.com/utopia-php/system/issues", - "source": "https://github.com/utopia-php/system/tree/0.10.0" + "source": "https://github.com/utopia-php/system/tree/0.10.1" }, - "time": "2025-10-15T19:12:00+00:00" + "time": "2026-03-15T21:07:41+00:00" }, { "name": "utopia-php/telemetry", @@ -5215,29 +5247,28 @@ }, { "name": "utopia-php/vcs", - "version": "2.0.0", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/utopia-php/vcs.git", - "reference": "058049326e04a2a0c2f0ce8ad00c7e84825aba14" + "reference": "5769679308bad498f2777547d48ab332166c4c0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/vcs/zipball/058049326e04a2a0c2f0ce8ad00c7e84825aba14", - "reference": "058049326e04a2a0c2f0ce8ad00c7e84825aba14", + "url": "https://api.github.com/repos/utopia-php/vcs/zipball/5769679308bad498f2777547d48ab332166c4c0b", + "reference": "5769679308bad498f2777547d48ab332166c4c0b", "shasum": "" }, "require": { "adhocore/jwt": "^1.1", "php": ">=8.0", - "utopia-php/cache": "1.0.*", - "utopia-php/framework": "0.*.*", - "utopia-php/system": "0.10.*" + "utopia-php/cache": "1.0.*" }, "require-dev": { "laravel/pint": "1.*.*", "phpstan/phpstan": "1.*.*", - "phpunit/phpunit": "^9.4" + "phpunit/phpunit": "^9.4", + "utopia-php/system": "0.10.*" }, "type": "library", "autoload": { @@ -5258,9 +5289,9 @@ ], "support": { "issues": "https://github.com/utopia-php/vcs/issues", - "source": "https://github.com/utopia-php/vcs/tree/2.0.0" + "source": "https://github.com/utopia-php/vcs/tree/2.0.2" }, - "time": "2026-02-25T11:36:45+00:00" + "time": "2026-03-13T15:25:16+00:00" }, { "name": "utopia-php/websocket", @@ -5438,16 +5469,16 @@ "packages-dev": [ { "name": "appwrite/sdk-generator", - "version": "1.11.1", + "version": "1.11.11", "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator.git", - "reference": "6ff411f26f2750eea05c7598c14bb3a2ada898cb" + "reference": "cfc37c85161a5515af4cd2f9885a811f51a2483a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/6ff411f26f2750eea05c7598c14bb3a2ada898cb", - "reference": "6ff411f26f2750eea05c7598c14bb3a2ada898cb", + "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/cfc37c85161a5515af4cd2f9885a811f51a2483a", + "reference": "cfc37c85161a5515af4cd2f9885a811f51a2483a", "shasum": "" }, "require": { @@ -5483,22 +5514,22 @@ "description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms", "support": { "issues": "https://github.com/appwrite/sdk-generator/issues", - "source": "https://github.com/appwrite/sdk-generator/tree/1.11.1" + "source": "https://github.com/appwrite/sdk-generator/tree/1.11.11" }, - "time": "2026-02-25T07:15:19+00:00" + "time": "2026-03-19T16:21:03+00:00" }, { "name": "brianium/paratest", - "version": "v7.19.0", + "version": "v7.19.2", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "7c6c29af7c4b406b49ce0c6b0a3a81d3684474e6" + "reference": "66e4f7910cecf67736bccf2b8bd53a2e3eb98bd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/7c6c29af7c4b406b49ce0c6b0a3a81d3684474e6", - "reference": "7c6c29af7c4b406b49ce0c6b0a3a81d3684474e6", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/66e4f7910cecf67736bccf2b8bd53a2e3eb98bd9", + "reference": "66e4f7910cecf67736bccf2b8bd53a2e3eb98bd9", "shasum": "" }, "require": { @@ -5512,9 +5543,9 @@ "phpunit/php-code-coverage": "^12.5.3 || ^13.0.1", "phpunit/php-file-iterator": "^6.0.1 || ^7", "phpunit/php-timer": "^8 || ^9", - "phpunit/phpunit": "^12.5.9 || ^13", + "phpunit/phpunit": "^12.5.14 || ^13.0.5", "sebastian/environment": "^8.0.3 || ^9", - "symfony/console": "^7.4.4 || ^8.0.4", + "symfony/console": "^7.4.7 || ^8.0.7", "symfony/process": "^7.4.5 || ^8.0.5" }, "require-dev": { @@ -5522,11 +5553,11 @@ "ext-pcntl": "*", "ext-pcov": "*", "ext-posix": "*", - "phpstan/phpstan": "^2.1.38", - "phpstan/phpstan-deprecation-rules": "^2.0.3", - "phpstan/phpstan-phpunit": "^2.0.12", - "phpstan/phpstan-strict-rules": "^2.0.8", - "symfony/filesystem": "^7.4.0 || ^8.0.1" + "phpstan/phpstan": "^2.1.40", + "phpstan/phpstan-deprecation-rules": "^2.0.4", + "phpstan/phpstan-phpunit": "^2.0.16", + "phpstan/phpstan-strict-rules": "^2.0.10", + "symfony/filesystem": "^7.4.6 || ^8.0.6" }, "bin": [ "bin/paratest", @@ -5566,7 +5597,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.19.0" + "source": "https://github.com/paratestphp/paratest/tree/v7.19.2" }, "funding": [ { @@ -5578,7 +5609,7 @@ "type": "paypal" } ], - "time": "2026-02-06T10:53:26+00:00" + "time": "2026-03-09T14:33:17+00:00" }, { "name": "czproject/git-php", @@ -5644,160 +5675,6 @@ ], "time": "2025-11-10T07:24:07+00:00" }, - { - "name": "doctrine/annotations", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "901c2ee5d26eb64ff43c47976e114bf00843acf7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/901c2ee5d26eb64ff43c47976e114bf00843acf7", - "reference": "901c2ee5d26eb64ff43c47976e114bf00843acf7", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^2 || ^3", - "ext-tokenizer": "*", - "php": "^7.2 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" - }, - "require-dev": { - "doctrine/cache": "^2.0", - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.10.28", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^5.4 || ^6.4 || ^7", - "vimeo/psalm": "^4.30 || ^5.14" - }, - "suggest": { - "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/2.0.2" - }, - "abandoned": true, - "time": "2024-09-05T10:17:24+00:00" - }, - { - "name": "doctrine/lexer", - "version": "3.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", - "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.21" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", - "type": "tidelift" - } - ], - "time": "2024-02-05T11:56:58+00:00" - }, { "name": "fidry/cpu-core-counter", "version": "1.3.0", @@ -5921,16 +5798,16 @@ }, { "name": "laravel/pint", - "version": "v1.27.1", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "54cca2de13790570c7b6f0f94f37896bee4abcb5" + "reference": "bdec963f53172c5e36330f3a400604c69bf02d39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/54cca2de13790570c7b6f0f94f37896bee4abcb5", - "reference": "54cca2de13790570c7b6f0f94f37896bee4abcb5", + "url": "https://api.github.com/repos/laravel/pint/zipball/bdec963f53172c5e36330f3a400604c69bf02d39", + "reference": "bdec963f53172c5e36330f3a400604c69bf02d39", "shasum": "" }, "require": { @@ -5941,13 +5818,14 @@ "php": "^8.2.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.93.1", - "illuminate/view": "^12.51.0", - "larastan/larastan": "^3.9.2", + "friendsofphp/php-cs-fixer": "^3.94.2", + "illuminate/view": "^12.54.1", + "larastan/larastan": "^3.9.3", "laravel-zero/framework": "^12.0.5", "mockery/mockery": "^1.6.12", - "nunomaduro/termwind": "^2.3.3", - "pestphp/pest": "^3.8.5" + "nunomaduro/termwind": "^2.4.0", + "pestphp/pest": "^3.8.6", + "shipfastlabs/agent-detector": "^1.1.0" }, "bin": [ "builds/pint" @@ -5984,7 +5862,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2026-02-10T20:00:20+00:00" + "time": "2026-03-12T15:51:39+00:00" }, { "name": "matthiasmullie/minify", @@ -6345,162 +6223,13 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "phpbench/container", - "version": "2.2.3", - "source": { - "type": "git", - "url": "https://github.com/phpbench/container.git", - "reference": "0c7b2d36c1ea53fe27302fb8873ded7172047196" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpbench/container/zipball/0c7b2d36c1ea53fe27302fb8873ded7172047196", - "reference": "0c7b2d36c1ea53fe27302fb8873ded7172047196", - "shasum": "" - }, - "require": { - "psr/container": "^1.0|^2.0", - "symfony/options-resolver": "^4.2 || ^5.0 || ^6.0 || ^7.0 || ^8.0" - }, - "require-dev": { - "php-cs-fixer/shim": "^3.89", - "phpstan/phpstan": "^0.12.52", - "phpunit/phpunit": "^8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "PhpBench\\DependencyInjection\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Leech", - "email": "daniel@dantleech.com" - } - ], - "description": "Simple, configurable, service container.", - "support": { - "issues": "https://github.com/phpbench/container/issues", - "source": "https://github.com/phpbench/container/tree/2.2.3" - }, - "time": "2025-11-06T09:05:13+00:00" - }, - { - "name": "phpbench/phpbench", - "version": "1.4.3", - "source": { - "type": "git", - "url": "https://github.com/phpbench/phpbench.git", - "reference": "b641dde59d969ea42eed70a39f9b51950bc96878" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpbench/phpbench/zipball/b641dde59d969ea42eed70a39f9b51950bc96878", - "reference": "b641dde59d969ea42eed70a39f9b51950bc96878", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^2.0", - "ext-dom": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "ext-tokenizer": "*", - "php": "^8.1", - "phpbench/container": "^2.2", - "psr/log": "^1.1 || ^2.0 || ^3.0", - "seld/jsonlint": "^1.1", - "symfony/console": "^6.1 || ^7.0 || ^8.0", - "symfony/filesystem": "^6.1 || ^7.0 || ^8.0", - "symfony/finder": "^6.1 || ^7.0 || ^8.0", - "symfony/options-resolver": "^6.1 || ^7.0 || ^8.0", - "symfony/process": "^6.1 || ^7.0 || ^8.0", - "webmozart/glob": "^4.6" - }, - "require-dev": { - "dantleech/invoke": "^2.0", - "ergebnis/composer-normalize": "^2.39", - "jangregor/phpstan-prophecy": "^1.0", - "php-cs-fixer/shim": "^3.9", - "phpspec/prophecy": "^1.22", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^10.4 || ^11.0", - "rector/rector": "^1.2", - "symfony/error-handler": "^6.1 || ^7.0 || ^8.0", - "symfony/var-dumper": "^6.1 || ^7.0 || ^8.0" - }, - "suggest": { - "ext-xdebug": "For Xdebug profiling extension." - }, - "bin": [ - "bin/phpbench" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "files": [ - "lib/Report/Func/functions.php" - ], - "psr-4": { - "PhpBench\\": "lib/", - "PhpBench\\Extensions\\XDebug\\": "extensions/xdebug/lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Leech", - "email": "daniel@dantleech.com" - } - ], - "description": "PHP Benchmarking Framework", - "keywords": [ - "benchmarking", - "optimization", - "performance", - "profiling", - "testing" - ], - "support": { - "issues": "https://github.com/phpbench/phpbench/issues", - "source": "https://github.com/phpbench/phpbench/tree/1.4.3" - }, - "funding": [ - { - "url": "https://github.com/dantleech", - "type": "github" - } - ], - "time": "2025-11-06T19:07:31+00:00" - }, { "name": "phpstan/phpstan", - "version": "2.1.40", + "version": "2.1.42", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b", - "reference": "9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1279e1ce86ba768f0780c9d889852b4e02ff40d0", + "reference": "1279e1ce86ba768f0780c9d889852b4e02ff40d0", "shasum": "" }, "require": { @@ -6545,7 +6274,7 @@ "type": "github" } ], - "time": "2026-02-23T15:04:35+00:00" + "time": "2026-03-17T14:58:32+00:00" }, { "name": "phpunit/php-code-coverage", @@ -6999,55 +6728,6 @@ ], "time": "2026-02-18T12:38:40+00:00" }, - { - "name": "psr/cache", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" - }, - "time": "2021-02-03T23:26:27+00:00" - }, { "name": "sebastian/cli-parser", "version": "4.2.0", @@ -7336,16 +7016,16 @@ }, { "name": "sebastian/environment", - "version": "8.0.3", + "version": "8.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68" + "reference": "7b8842c2d8e85d0c3a5831236bf5869af6ab2a11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/24a711b5c916efc6d6e62aa65aa2ec98fef77f68", - "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/7b8842c2d8e85d0c3a5831236bf5869af6ab2a11", + "reference": "7b8842c2d8e85d0c3a5831236bf5869af6ab2a11", "shasum": "" }, "require": { @@ -7388,7 +7068,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/8.0.3" + "source": "https://github.com/sebastianbergmann/environment/tree/8.0.4" }, "funding": [ { @@ -7408,7 +7088,7 @@ "type": "tidelift" } ], - "time": "2025-08-12T14:11:56+00:00" + "time": "2026-03-15T07:05:40+00:00" }, { "name": "sebastian/exporter", @@ -7945,70 +7625,6 @@ ], "time": "2025-02-07T05:00:38+00:00" }, - { - "name": "seld/jsonlint", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/1748aaf847fc731cfad7725aec413ee46f0cc3a2", - "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.11", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" - }, - "bin": [ - "bin/jsonlint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" - } - ], - "description": "JSON Linter", - "keywords": [ - "json", - "linter", - "parser", - "validator" - ], - "support": { - "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.11.0" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", - "type": "tidelift" - } - ], - "time": "2024-07-11T14:55:45+00:00" - }, { "name": "staabm/side-effects-detector", "version": "1.0.5", @@ -8095,16 +7711,16 @@ }, { "name": "symfony/console", - "version": "v8.0.4", + "version": "v8.0.7", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "ace03c4cf9805080ff40cbeec69fca180c339a3b" + "reference": "15ed9008a4ebe2d6a78e4937f74e0c13ef2e618a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/ace03c4cf9805080ff40cbeec69fca180c339a3b", - "reference": "ace03c4cf9805080ff40cbeec69fca180c339a3b", + "url": "https://api.github.com/repos/symfony/console/zipball/15ed9008a4ebe2d6a78e4937f74e0c13ef2e618a", + "reference": "15ed9008a4ebe2d6a78e4937f74e0c13ef2e618a", "shasum": "" }, "require": { @@ -8161,7 +7777,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v8.0.4" + "source": "https://github.com/symfony/console/tree/v8.0.7" }, "funding": [ { @@ -8181,216 +7797,7 @@ "type": "tidelift" } ], - "time": "2026-01-13T13:06:50+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v8.0.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "d937d400b980523dc9ee946bb69972b5e619058d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/d937d400b980523dc9ee946bb69972b5e619058d", - "reference": "d937d400b980523dc9ee946bb69972b5e619058d", - "shasum": "" - }, - "require": { - "php": ">=8.4", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" - }, - "require-dev": { - "symfony/process": "^7.4|^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v8.0.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-12-01T09:13:36+00:00" - }, - { - "name": "symfony/finder", - "version": "v8.0.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8bd576e97c67d45941365bf824e18dc8538e6eb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8bd576e97c67d45941365bf824e18dc8538e6eb0", - "reference": "8bd576e97c67d45941365bf824e18dc8538e6eb0", - "shasum": "" - }, - "require": { - "php": ">=8.4" - }, - "require-dev": { - "symfony/filesystem": "^7.4|^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v8.0.5" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-01-26T15:08:38+00:00" - }, - { - "name": "symfony/options-resolver", - "version": "v8.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d2b592535ffa6600c265a3893a7f7fd2bad82dd7", - "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7", - "shasum": "" - }, - "require": { - "php": ">=8.4", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an improved replacement for the array_replace PHP function", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "support": { - "source": "https://github.com/symfony/options-resolver/tree/v8.0.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-11-12T15:55:31+00:00" + "time": "2026-03-06T14:06:22+00:00" }, { "name": "symfony/polyfill-ctype", @@ -8789,16 +8196,16 @@ }, { "name": "symfony/string", - "version": "v8.0.4", + "version": "v8.0.6", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "758b372d6882506821ed666032e43020c4f57194" + "reference": "6c9e1108041b5dce21a9a4984b531c4923aa9ec4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/758b372d6882506821ed666032e43020c4f57194", - "reference": "758b372d6882506821ed666032e43020c4f57194", + "url": "https://api.github.com/repos/symfony/string/zipball/6c9e1108041b5dce21a9a4984b531c4923aa9ec4", + "reference": "6c9e1108041b5dce21a9a4984b531c4923aa9ec4", "shasum": "" }, "require": { @@ -8855,7 +8262,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v8.0.4" + "source": "https://github.com/symfony/string/tree/v8.0.6" }, "funding": [ { @@ -8875,7 +8282,7 @@ "type": "tidelift" } ], - "time": "2026-01-12T12:37:40+00:00" + "time": "2026-02-09T10:14:57+00:00" }, { "name": "textalk/websocket", @@ -9054,55 +8461,6 @@ } ], "time": "2024-11-07T12:36:22+00:00" - }, - { - "name": "webmozart/glob", - "version": "4.7.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/glob.git", - "reference": "8a2842112d6916e61e0e15e316465b611f3abc17" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/glob/zipball/8a2842112d6916e61e0e15e316465b611f3abc17", - "reference": "8a2842112d6916e61e0e15e316465b611f3abc17", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8.0.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5", - "symfony/filesystem": "^5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Glob\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "A PHP implementation of Ant's glob.", - "support": { - "issues": "https://github.com/webmozarts/glob/issues", - "source": "https://github.com/webmozarts/glob/tree/4.7.0" - }, - "time": "2024-03-07T20:33:40+00:00" } ], "aliases": [], diff --git a/docker-compose.yml b/docker-compose.yml index c0b0560a7f..7d64dfa867 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1122,6 +1122,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DATABASE_SHARED_TABLES appwrite-task-scheduler-messages: entrypoint: schedule-messages @@ -1300,7 +1301,7 @@ services: networks: - appwrite volumes: - - appwrite-postgresql:/var/lib/postgresql/data:rw + - appwrite-postgresql:/var/lib/postgresql:rw ports: - "5432:5432" environment: diff --git a/docs/sdks/python/GETTING_STARTED.md b/docs/sdks/python/GETTING_STARTED.md index 2732ef8483..09569d3eb0 100644 --- a/docs/sdks/python/GETTING_STARTED.md +++ b/docs/sdks/python/GETTING_STARTED.md @@ -20,10 +20,16 @@ client = Client() ### Make Your First Request Once your SDK object is set, create any of the Appwrite service objects and choose any request to send. Full documentation for any service method you would like to use can be found in your SDK documentation or in the [API References](https://appwrite.io/docs) section. +All service methods return typed Pydantic models, so you can access response fields as attributes: + ```python users = Users(client) -result = users.create(ID.unique(), email = "email@example.com", phone = "+123456789", password = "password", name = "Walter O'Brien") +user = users.create(ID.unique(), email = "email@example.com", phone = "+123456789", password = "password", name = "Walter O'Brien") + +print(user.name) # "Walter O'Brien" +print(user.email) # "email@example.com" +print(user.id) # The generated user ID ``` ### Full Example @@ -43,7 +49,60 @@ client = Client() users = Users(client) -result = users.create(ID.unique(), email = "email@example.com", phone = "+123456789", password = "password", name = "Walter O'Brien") +user = users.create(ID.unique(), email = "email@example.com", phone = "+123456789", password = "password", name = "Walter O'Brien") + +print(user.name) # Access fields as attributes +print(user.to_dict()) # Convert to dictionary if needed +``` + +### Type Safety with Models + +The Appwrite Python SDK provides type safety when working with database rows through generic methods. Methods like `get_row`, `list_rows`, and others accept a `model_type` parameter that allows you to specify your custom Pydantic model for full type safety. + +```python +from pydantic import BaseModel +from datetime import datetime +from typing import Optional +from appwrite.client import Client +from appwrite.services.tables_db import TablesDB + +# Define your custom model matching your table schema +class Post(BaseModel): + postId: int + authorId: int + title: str + content: str + createdAt: datetime + updatedAt: datetime + isPublished: bool + excerpt: Optional[str] = None + +client = Client() +# ... configure your client ... + +tables_db = TablesDB(client) + +# Fetch a single row with type safety +row = tables_db.get_row( + database_id="your-database-id", + table_id="your-table-id", + row_id="your-row-id", + model_type=Post # Pass your custom model type +) + +print(row.data.title) # Fully typed - IDE autocomplete works +print(row.data.postId) # int type, not Any +print(row.data.createdAt) # datetime type + +# Fetch multiple rows with type safety +result = tables_db.list_rows( + database_id="your-database-id", + table_id="your-table-id", + model_type=Post +) + +for row in result.rows: + print(f"{row.data.title} by {row.data.authorId}") ``` ### Error Handling @@ -52,7 +111,8 @@ The Appwrite Python SDK raises `AppwriteException` object with `message`, `code` ```python users = Users(client) try: - result = users.create(ID.unique(), email = "email@example.com", phone = "+123456789", password = "password", name = "Walter O'Brien") + user = users.create(ID.unique(), email = "email@example.com", phone = "+123456789", password = "password", name = "Walter O'Brien") + print(user.name) except AppwriteException as e: print(e.message) ``` diff --git a/mongo-entrypoint.sh b/mongo-entrypoint.sh old mode 100755 new mode 100644 diff --git a/phpbench.json b/phpbench.json deleted file mode 100644 index adc40d1294..0000000000 --- a/phpbench.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema":"vendor/phpbench/phpbench/phpbench.schema.json", - "runner.bootstrap": "vendor/autoload.php", - "runner.path": "tests", - "runner.file_pattern": "*Bench.php" -} \ No newline at end of file diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 99ff5018d3..2d8acd6f3a 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1,1391 +1,23 @@ parameters: ignoreErrors: - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: app/cli.php - - - - message: '#^Binary operation "\." between ''Error log pushed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/cli.php - - - - message: '#^Binary operation "\." between ''mysql\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/cli.php - - - - message: '#^Cannot access offset ''console'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/cli.php - - - - message: '#^Cannot call method addLog\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/cli.php - - - - message: '#^Cannot call method get\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: app/cli.php - - - - message: '#^Cannot call method setResolver\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/cli.php - - - - message: '#^Parameter \#1 \$array of function array_key_last expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/cli.php - - - - message: '#^Parameter \#1 \$array of function array_shift expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/cli.php - - - - message: '#^Parameter \#1 \$authorization of method Utopia\\Database\\Database\:\:setAuthorization\(\) expects Utopia\\Database\\Validator\\Authorization, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/cli.php - - - - message: '#^Parameter \#1 \$dsn of class Utopia\\DSN\\DSN constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/cli.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/cli.php - - - - message: '#^Parameter \#1 \$name of class Utopia\\Queue\\Queue constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/cli.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\DI\\Injection\:\:inject\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/cli.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Cache\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/cli.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Database\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, Utopia\\Pools\\Pool\ given\.$#' - identifier: argument.type - count: 2 - path: app/cli.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Database\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/cli.php - - - - message: '#^Parameter \#1 \$version of method Utopia\\Logger\\Log\:\:setVersion\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/cli.php - - - - message: '#^Parameter \#2 \$cache of class Utopia\\Database\\Database constructor expects Utopia\\Cache\\Cache, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/cli.php - - - - message: '#^Parameter \#2 \$collection of method Utopia\\Database\\Database\:\:exists\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/cli.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/cli.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: app/cli.php - - - - message: '#^Result of && is always false\.$#' - identifier: booleanAnd.alwaysFalse - count: 3 - path: app/cli.php - - - - message: '#^Strict comparison using \!\=\= between null and null will always evaluate to false\.$#' - identifier: notIdentical.alwaysFalse - count: 1 - path: app/cli.php - - - - message: '#^Variable \$dbForPlatform might not be defined\.$#' - identifier: variable.undefined - count: 1 - path: app/cli.php - - - - message: '#^Cannot access offset ''files'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/config/collections.php - - - - message: '#^Parameter \#1 \.\.\.\$arrays of function array_merge_recursive expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/config/collections.php - - - - message: '#^Parameter \#2 \.\.\.\$arrays of function array_merge_recursive expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/config/collections.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/config/collections/platform.php - - - - message: '#^Cannot access offset ''attributes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/config/collections/platform.php - - - - message: '#^Cannot access offset ''FLUTTER'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/config/frameworks.php - - - - message: '#^Cannot access offset ''NODE'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: app/config/frameworks.php - - - - message: '#^Parameter \#1 \$haystack of function str_contains expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: app/config/platform.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 3 - path: app/config/platform.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 1 - path: app/config/storage/resource_limits.php - - - - message: '#^Binary operation "\." between mixed and ''\-'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/config/template-runtimes.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/config/template-runtimes.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/config/template-runtimes.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/config/template-runtimes.php - - - - message: '#^Cannot access offset ''version'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/config/template-runtimes.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/config/template-runtimes.php - - - - message: '#^Parameter \#1 \$array of function array_reduce expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/config/template-runtimes.php - - - - message: '#^Parameter \#1 \$string of function strtoupper expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/config/template-runtimes.php - - - - message: '#^Cannot access offset ''BUN'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/config/templates/function.php - - - - message: '#^Cannot access offset ''DART'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: app/config/templates/function.php - - - - message: '#^Cannot access offset ''DENO'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/config/templates/function.php - - - - message: '#^Cannot access offset ''GO'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/config/templates/function.php - - - - message: '#^Cannot access offset ''NODE'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 39 - path: app/config/templates/function.php - - - - message: '#^Cannot access offset ''PHP'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: app/config/templates/function.php - - - - message: '#^Cannot access offset ''PYTHON'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: app/config/templates/function.php - - - - message: '#^Cannot access offset ''RUBY'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/config/templates/function.php - - - - message: '#^Function getRuntimes\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: app/config/templates/function.php - - - - message: '#^Function getRuntimes\(\) has parameter \$allowList with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: app/config/templates/function.php - - - - message: '#^Function getRuntimes\(\) has parameter \$commands with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: app/config/templates/function.php - - - - message: '#^Function getRuntimes\(\) has parameter \$entrypoint with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: app/config/templates/function.php - - - - message: '#^Function getRuntimes\(\) has parameter \$providerRootDirectory with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: app/config/templates/function.php - - - - message: '#^Function getRuntimes\(\) has parameter \$runtimes with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: app/config/templates/function.php - - - - message: '#^Method FunctionUseCases\:\:getAll\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: app/config/templates/function.php - - - - message: '#^Only iterables can be unpacked, mixed given\.$#' - identifier: arrayUnpacking.nonIterable - count: 67 - path: app/config/templates/function.php - - message: '#^PHPDoc tag @var above a method has no effect\.$#' identifier: varTag.misplaced count: 1 path: app/config/templates/function.php - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/config/templates/function.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/config/templates/function.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/config/templates/function.php - - message: '#^Array has 2 duplicate keys with value ''outputDirectory'' \(''outputDirectory'', ''outputDirectory''\)\.$#' identifier: array.duplicateKey count: 3 path: app/config/templates/site.php - - - message: '#^Binary operation "\." between ''http\://''\|''https\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/config/templates/site.php - - - - message: '#^Cannot access offset ''consoleHostname'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/config/templates/site.php - - - - message: '#^Function getFramework\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: app/config/templates/site.php - - - - message: '#^Function getFramework\(\) has parameter \$overrides with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: app/config/templates/site.php - - - - message: '#^Method SiteUseCases\:\:getAll\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: app/config/templates/site.php - - message: '#^PHPDoc tag @var above a method has no effect\.$#' identifier: varTag.misplaced count: 1 path: app/config/templates/site.php - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/config/variables.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 10 - path: app/controllers/api/account.php - - - - message: '#^Binary operation "\-" between int\<0, max\> and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Binary operation "\." between ''Failed to obtain…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Binary operation "\." between ''The '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Binary operation "\." between ''_APP_OPENSSL_KEY_V'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Binary operation "\." between ''countries\.'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Binary operation "\." between ''http\://''\|''https\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Binary operation "\." between literal\-string&non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Binary operation "\." between mixed and '' '' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Binary operation "\." between mixed and ''Appid'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Binary operation "\." between mixed and ''Secret'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Call to an undefined method object\:\:getAccessToken\(\)\.$#' - identifier: method.notFound - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Call to an undefined method object\:\:getAccessTokenExpiry\(\)\.$#' - identifier: method.notFound - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Call to an undefined method object\:\:getLoginURL\(\)\.$#' - identifier: method.notFound - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Call to an undefined method object\:\:getRefreshToken\(\)\.$#' - identifier: method.notFound - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Call to an undefined method object\:\:refreshTokens\(\)\.$#' - identifier: method.notFound - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''class'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''country'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''firstName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''host'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''invalidateSessions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''iso_code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''iv'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''lastName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''limit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''method'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''mock'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''mockNumbers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''otp'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''password'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''passwordDictionary'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''passwordHistory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''personalDataCheck'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''phone'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''port'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''query'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''replyTo'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''secure'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''senderEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''senderName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''sessionAlerts'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''subject'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''tag'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''username'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset ''version'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: app/controllers/api/account.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/controllers/api/account.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 9 - path: app/controllers/api/account.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Cannot call method render\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Cannot call method setAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 6 - path: app/controllers/api/account.php - - - - message: '#^Cannot call method setParam\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Function sendSessionAlert\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Function sendSessionAlert\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Instanceof between Utopia\\Database\\Document and Utopia\\Database\\Document will always evaluate to true\.$#' - identifier: instanceof.alwaysTrue - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Only iterables can be unpacked, mixed given\.$#' - identifier: arrayUnpacking.nonIterable - count: 4 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$array of function array_slice expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$body of method Appwrite\\Event\\Mail\:\:setBody\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$class of function class_exists expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$content of static method Appwrite\\Template\\Template\:\:fromString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 8 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$dictionary of class Appwrite\\Auth\\Validator\\PasswordDictionary constructor expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$document of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$document of method Appwrite\\Utopia\\Response\:\:output\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$email of class Utopia\\Emails\\Email constructor expects string, array\|float\|int\|string\|false\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$history of class Appwrite\\Auth\\Validator\\PasswordHistory constructor expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$host of method Appwrite\\Event\\Mail\:\:setSmtpHost\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array given\.$#' - identifier: argument.type - count: 4 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array\ given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$ipAddress of method MaxMind\\Db\\Reader\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$name of method Appwrite\\Event\\Mail\:\:setName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$name of method Appwrite\\Event\\Mail\:\:setSenderName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Http\\Response\:\:addCookie\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 7 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$numberToParse of method libphonenumber\\PhoneNumberUtil\:\:parse\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$password of method Appwrite\\Event\\Mail\:\:setSmtpPassword\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$port of method Appwrite\\Event\\Mail\:\:setSmtpPort\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$preview of method Appwrite\\Event\\Mail\:\:setPreview\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$proof of method Utopia\\Auth\\Proof\:\:hash\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$proof of method Utopia\\Auth\\Proof\:\:verify\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$query of static method Appwrite\\URL\\URL\:\:parseQuery\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$recipient of method Appwrite\\Event\\Mail\:\:setRecipient\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$recipients of method Appwrite\\Event\\Messaging\:\:setRecipients\(\) expects array\, array\ given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$replyTo of method Appwrite\\Event\\Mail\:\:setSmtpReplyTo\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$secret of method Appwrite\\Utopia\\Database\\Documents\\User\:\:sessionVerify\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 8 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$secure of method Appwrite\\Event\\Mail\:\:setSmtpSecure\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$senderEmail of method Appwrite\\Event\\Mail\:\:setSmtpSenderEmail\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$senderName of method Appwrite\\Event\\Mail\:\:setSmtpSenderName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$string of function hex2bin expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 14 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$subject of method Appwrite\\Event\\Mail\:\:setSubject\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$type of static method Utopia\\Auth\\Proofs\\Password\:\:createHash\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$url of function parse_url expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$url of method Utopia\\Http\\Response\:\:redirect\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$url of static method Appwrite\\Template\\Template\:\:unParseURL\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$url of static method Appwrite\\URL\\URL\:\:parse\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$userAgent of class Appwrite\\Detector\\Detector constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$userId of closure expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$userId of method Utopia\\Audit\\Audit\:\:countLogsByUser\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$userId of method Utopia\\Audit\\Audit\:\:getLogsByUser\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$username of method Appwrite\\Event\\Mail\:\:setSmtpUsername\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#10 \$geodb of closure expects MaxMind\\Db\\Reader, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#11 \$queueForEvents of closure expects Appwrite\\Event\\Event, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#12 \$queueForMails of closure expects Appwrite\\Event\\Mail, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#13 \$store of closure expects Utopia\\Auth\\Store, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#15 \$proofForCode of closure expects Utopia\\Auth\\Proofs\\Code, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#16 \$authorization of closure expects Utopia\\Database\\Validator\\Authorization, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, false given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 9 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$email of class Appwrite\\Auth\\Validator\\PersonalData constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$enabled of class Appwrite\\Auth\\Validator\\PasswordDictionary constructor expects bool, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$hash of method Utopia\\Auth\\Hash\:\:verify\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$hash of method Utopia\\Auth\\Proof\:\:verify\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, string\|true given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:updateDocument\(\) expects string, bool\|string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:updateDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$options of static method Utopia\\Auth\\Proofs\\Password\:\:createHash\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 6 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, int\\|int\<1, max\> given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$seconds of static method Utopia\\Database\\DateTime\:\:addSeconds\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 9 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$secret of closure expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 7 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$value of static method Utopia\\Database\\Query\:\:notEqual\(\) expects array\\|bool\|float\|int\|string, string\|null given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#2 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#3 \$document of method Utopia\\Database\\Database\:\:updateDocument\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#3 \$length of function array_slice expects int\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#3 \$name of class Appwrite\\Auth\\Validator\\PersonalData constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#3 \$request of closure expects Appwrite\\Utopia\\Request, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#4 \$phone of class Appwrite\\Auth\\Validator\\PersonalData constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#4 \$response of closure expects Appwrite\\Utopia\\Response, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#5 \$domain of method Utopia\\Http\\Response\:\:addCookie\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 14 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#5 \$iv of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#5 \$user of closure expects Appwrite\\Utopia\\Database\\Documents\\User, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#6 \$dbForProject of closure expects Utopia\\Database\\Database, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#6 \$tag of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#7 \$project of closure expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#8 \$platform of closure expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#8 \$sameSite of method Utopia\\Http\\Response\:\:addCookie\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 7 - path: app/controllers/api/account.php - - - - message: '#^Parameter \#9 \$locale of closure expects Utopia\\Locale\\Locale, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Part \$device\[''deviceBrand''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Part \$device\[''deviceModel''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: app/controllers/api/account.php - - - - message: '#^Part \$identityId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: app/controllers/api/account.php - - message: '#^Result of method Appwrite\\Utopia\\Response\:\:dynamic\(\) \(void\) is used\.$#' identifier: method.void @@ -1398,1728 +30,30 @@ parameters: count: 1 path: app/controllers/api/account.php - - - message: '#^Right side of && is always true\.$#' - identifier: booleanAnd.rightAlwaysTrue - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Strict comparison using \!\=\= between class\-string and null will always evaluate to true\.$#' - identifier: notIdentical.alwaysTrue - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Strict comparison using \=\=\= between Appwrite\\Utopia\\Database\\Documents\\User and false will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: app/controllers/api/account.php - - - - message: '#^Strict comparison using \=\=\= between Utopia\\Database\\Document and false will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 3 - path: app/controllers/api/account.php - - message: '#^Variable \$session might not be defined\.$#' identifier: variable.undefined count: 3 path: app/controllers/api/account.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: app/controllers/api/graphql.php - - - - message: '#^Cannot access offset ''operationName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Cannot access offset ''query'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/controllers/api/graphql.php - - - - message: '#^Cannot access offset ''variables'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/graphql.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/graphql.php - - - - message: '#^Cannot call method toArray\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: app/controllers/api/graphql.php - - - - message: '#^Function execute\(\) has parameter \$query with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Function execute\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Function parseGraphql\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Function parseMultipart\(\) has parameter \$query with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Function parseMultipart\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Function processResult\(\) has parameter \$debugFlags with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Function processResult\(\) has parameter \$result with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Function processResult\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Function processResult\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/graphql.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Http\\Adapter\\Swoole\\Request\:\:getFiles\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Parameter \#1 \$query of function parseMultipart expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/graphql.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/graphql.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Parameter \#3 \$query of function execute expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/graphql.php - - - - message: '#^Parameter \#3 \$source of static method GraphQL\\GraphQL\:\:promiseToExecute\(\) expects GraphQL\\Language\\AST\\DocumentNode\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Parameter \$operationName of static method GraphQL\\GraphQL\:\:promiseToExecute\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Parameter \$variableValues of static method GraphQL\\GraphQL\:\:promiseToExecute\(\) expects array\\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/graphql.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: app/controllers/api/locale.php - - - - message: '#^Binary operation "\." between ''\+'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/api/locale.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/controllers/api/locale.php - - - - message: '#^Cannot access offset ''continent'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/locale.php - - - - message: '#^Cannot access offset ''country'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/controllers/api/locale.php - - - - message: '#^Cannot access offset ''iso_code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/controllers/api/locale.php - - - - message: '#^Cannot access offset ''locations'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/locale.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/locale.php - - - - message: '#^Parameter \#1 \$array of function asort expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/locale.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/locale.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, int\|string given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/locale.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: app/controllers/api/locale.php - - - - message: '#^Parameter \#1 \$string1 of function strcmp expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/locale.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/locale.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/locale.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, false given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/locale.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/locale.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/locale.php - - - - message: '#^Parameter \#2 \$string2 of function strcmp expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/locale.php - - message: '#^Variable \$output might not be defined\.$#' identifier: variable.undefined count: 1 path: app/controllers/api/locale.php - - - message: '#^Call to function array_key_exists\(\) with ''from'' and array\{\} will always evaluate to false\.$#' - identifier: function.impossibleType - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''accountSid'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''action'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''apiKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''apiSecret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''attachments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''authKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''authKeyId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''authToken'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''autoTLS'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''badge'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''bcc'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''bundle'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''cc'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''color'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''content'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''contentAvailable'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''country'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''critical'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''customerId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''domain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''encryption'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''fromEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''fromName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''host'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''html'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''icon'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''image'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''isEuRegion'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''iso_code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''mailer'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''mode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''password'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''port'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''priority'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''replyToEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''replyToName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''sandbox'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''senderId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''sound'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''subject'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''tag'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''teamId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''templateId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''title'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''userEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''userName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/controllers/api/messaging.php - - - - message: '#^Cannot access offset ''username'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/messaging.php - - - - message: '#^Dead catch \- Appwrite\\Extend\\Exception is never thrown in the try block\.$#' - identifier: catch.neverThrown - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#1 \$dbFormat of static method Utopia\\Database\\DateTime\:\:formatTz\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#1 \$ipAddress of method MaxMind\\Db\\Reader\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#1 \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#1 \$key of static method Appwrite\\Utopia\\Database\\Validator\\CompoundUID\:\:parse\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 9 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 12 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#1 \$userAgent of class Appwrite\\Detector\\Detector constructor expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, array\|null given\.$#' - identifier: argument.type - count: 9 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 9 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#1 \.\.\.\$arrays of function array_merge expects array, array\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 18 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, false given\.$#' - identifier: argument.type - count: 4 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 4 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:deleteDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 22 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#2 \$permissions of class Utopia\\Database\\Validator\\Authorization\\Input constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#2 \.\.\.\$arrays of function array_merge expects array, array\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Parameter \#3 \.\.\.\$arrays of function array_merge expects array, array\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Part \$messageId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Part \$platform\[''apiHostname''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: app/controllers/api/messaging.php - - - - message: '#^Part \$providerId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Part \$subscriberId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Part \$targetId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Part \$topicId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: app/controllers/api/messaging.php - - - - message: '#^Result of && is always false\.$#' - identifier: booleanAnd.alwaysFalse - count: 1 - path: app/controllers/api/messaging.php - - message: '#^Variable \$currentScheduledAt on left side of \?\? is never defined\.$#' identifier: nullCoalesce.variable count: 1 path: app/controllers/api/messaging.php - - - message: '#^Binary operation "\." between ''File not found in '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Binary operation "\." between ''_APP_OPENSSL_KEY_V'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Cannot access offset ''client_email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/migrations.php - - - - message: '#^Cannot access offset ''private_key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/migrations.php - - - - message: '#^Cannot access offset ''project_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:exists\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:read\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:transfer\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \#1 \$resources of method Utopia\\Migration\\Sources\\Appwrite\:\:report\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \#1 \$resources of method Utopia\\Migration\\Sources\\Firebase\:\:report\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \#1 \$resources of method Utopia\\Migration\\Sources\\NHost\:\:report\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \#1 \$resources of method Utopia\\Migration\\Sources\\Supabase\:\:report\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \#1 \$serviceAccount of class Utopia\\Migration\\Sources\\Firebase constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \#1 \$string of function hex2bin expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \#5 \$iv of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \#6 \$tag of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \#7 \$port of class Utopia\\Migration\\Sources\\NHost constructor expects string, int given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \#7 \$port of class Utopia\\Migration\\Sources\\Supabase constructor expects string, int given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \$attributes of class Utopia\\Database\\Validator\\Queries\\Documents constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Parameter \$indexes of class Utopia\\Database\\Validator\\Queries\\Documents constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Part \$migrationId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: app/controllers/api/migrations.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: app/controllers/api/project.php - - - - message: '#^Binary operation "\*" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: app/controllers/api/project.php - - - - message: '#^Binary operation "\+" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: app/controllers/api/project.php - - - - message: '#^Binary operation "\+\=" between \(float\|int\) and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 2 - path: app/controllers/api/project.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/project.php - - - - message: '#^Cannot call method find\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/controllers/api/project.php - - - - message: '#^Cannot call method findOne\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/controllers/api/project.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: app/controllers/api/project.php - - - - message: '#^Match expression does not handle remaining value\: string$#' - identifier: match.unhandled - count: 3 - path: app/controllers/api/project.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:limit\(\) expects int, int\|false given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/project.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 7 - path: app/controllers/api/project.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/project.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/project.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: app/controllers/api/project.php - - - - message: '#^Strict comparison using \=\=\= between Utopia\\Database\\Document and false will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 3 - path: app/controllers/api/project.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''invalidateSessions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''limit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''locale'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''maxSessions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''membershipsMfa'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''membershipsUserEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''membershipsUserName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''mockNumbers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''optional'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''otp'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''passwordDictionary'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''passwordHistory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''personalDataCheck'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''phone'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''replyTo'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''senderEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''senderName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''sessionAlerts'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''sms'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''subject'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: app/controllers/api/projects.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/controllers/api/projects.php - - - - message: '#^Parameter \#1 \$allowInternal of class Appwrite\\Utopia\\Database\\Validator\\CustomId constructor expects bool, int given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/projects.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 8 - path: app/controllers/api/projects.php - - - - message: '#^Parameter \#1 \$content of static method Appwrite\\Template\\Template\:\:fromString\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Parameter \#1 \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Parameter \#1 \$list of class Utopia\\Validator\\WhiteList constructor expects array, mixed given\.$#' - identifier: argument.type - count: 12 - path: app/controllers/api/projects.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Locale\\Locale\:\:setFallback\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Parameter \#1 \$recipient of method Appwrite\\Event\\Mail\:\:setRecipient\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Parameter \#2 \$callback of function array_filter expects \(callable\(mixed\)\: bool\)\|null, Closure\(mixed\)\: mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/projects.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 13 - path: app/controllers/api/projects.php - - - - message: '#^Part \$keyId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: app/controllers/api/projects.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 2 - path: app/controllers/api/projects.php - - message: '#^Result of method Utopia\\Http\\Response\:\:noContent\(\) \(void\) is used\.$#' identifier: method.void count: 1 path: app/controllers/api/projects.php - - - message: '#^Result of \|\| is always false\.$#' - identifier: booleanOr.alwaysFalse - count: 4 - path: app/controllers/api/projects.php - - - - message: '#^Strict comparison using \=\=\= between bool and ''1'' will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 2 - path: app/controllers/api/projects.php - - - - message: '#^Strict comparison using \=\=\= between bool and ''true'' will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 2 - path: app/controllers/api/projects.php - - - - message: '#^Strict comparison using \=\=\= between bool and 1 will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 2 - path: app/controllers/api/projects.php - - - - message: '#^Unreachable statement \- code above always terminates\.$#' - identifier: deadCode.unreachable - count: 3 - path: app/controllers/api/projects.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 4 - path: app/controllers/api/users.php - - - - message: '#^Binary operation "\*" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Binary operation "\+\=" between \(float\|int\) and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Binary operation "\-" between int\<0, max\> and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset ''country'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset ''factor'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset ''invalidateSessions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset ''iso_code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset ''limit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset ''passwordDictionary'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset ''passwordHistory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset ''period'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset ''personalDataCheck'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset ''userEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset ''userName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset int\<0, max\> on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: app/controllers/api/users.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Cannot call method isEmpty\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Instanceof between Utopia\\Database\\Document and Utopia\\Database\\Document will always evaluate to true\.$#' - identifier: instanceof.alwaysTrue - count: 4 - path: app/controllers/api/users.php - - - - message: '#^Match expression does not handle remaining value\: mixed$#' - identifier: match.unhandled - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Only iterables can be unpacked, mixed given\.$#' - identifier: arrayUnpacking.nonIterable - count: 4 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$array of function array_slice expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$dictionary of class Appwrite\\Auth\\Validator\\PasswordDictionary constructor expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$document of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$email of class Utopia\\Emails\\Email constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$history of class Appwrite\\Auth\\Validator\\PasswordHistory constructor expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$ipAddress of method MaxMind\\Db\\Reader\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 5 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$type of static method Utopia\\Auth\\Proofs\\Password\:\:createHash\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$userAgent of class Appwrite\\Detector\\Detector constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$userId of method Utopia\\Audit\\Audit\:\:countLogsByUser\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$userId of method Utopia\\Audit\\Audit\:\:getLogsByUser\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 4 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:limit\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, false given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#2 \$email of class Appwrite\\Auth\\Validator\\PersonalData constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#2 \$enabled of class Appwrite\\Auth\\Validator\\PasswordDictionary constructor expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#2 \$options of static method Utopia\\Auth\\Proofs\\Password\:\:createHash\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#2 \$seconds of static method Utopia\\Database\\DateTime\:\:addSeconds\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#2 \$value of static method Utopia\\Database\\Query\:\:notEqual\(\) expects array\\|bool\|float\|int\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#3 \$length of function array_slice expects int\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#3 \$name of class Appwrite\\Auth\\Validator\\PersonalData constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \#4 \$phone of class Appwrite\\Auth\\Validator\\PersonalData constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Parameter \$enabled of class Appwrite\\Auth\\Validator\\PasswordDictionary constructor expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Part \$identityId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Part \$targetId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Part \$userId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: app/controllers/api/users.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: app/controllers/api/users.php - - message: '#^Result of method Appwrite\\Utopia\\Response\:\:dynamic\(\) \(void\) is used\.$#' identifier: method.void @@ -3132,570 +66,6 @@ parameters: count: 1 path: app/controllers/api/users.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 8 - path: app/controllers/general.php - - - - message: '#^Binary operation "\+" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/general.php - - - - message: '#^Binary operation "\+" between mixed and 60 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/general.php - - - - message: '#^Binary operation "\." between ''/console/project\-'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: app/controllers/general.php - - - - message: '#^Binary operation "\." between ''\?'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/general.php - - - - message: '#^Binary operation "\." between ''Runtime "'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/general.php - - - - message: '#^Binary operation "\." between ''Unknown resource…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/general.php - - - - message: '#^Binary operation "\." between ''cd /usr/local…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/general.php - - - - message: '#^Binary operation "\." between ''http\://''\|''https\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/general.php - - - - message: '#^Binary operation "\." between ''mysql\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/general.php - - - - message: '#^Binary operation "\." between mixed and '' \- Error'' results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: app/controllers/general.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 7 - path: app/controllers/general.php - - - - message: '#^Binary operation "\.\=" between mixed and non\-falsy\-string results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''adapters'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''content\-length''\|''content\-type''\|''x\-appwrite\-execution\-id''\|''x\-appwrite\-log\-id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''continent'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''controller'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''country'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''cpus'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''host'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''image'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''iso_code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''memory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''query_string'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''request_method'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''request_uri'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''startCommand'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''static\-1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/general.php - - - - message: '#^Cannot access offset ''version'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/general.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: app/controllers/general.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 4 - path: app/controllers/general.php - - - - message: '#^Cannot call method getLabel\(\) on Utopia\\Http\\Route\|null\.$#' - identifier: method.nonObject - count: 1 - path: app/controllers/general.php - - - - message: '#^Cannot cast mixed to string\.$#' - identifier: cast.string - count: 2 - path: app/controllers/general.php - - - - message: '#^Comparison operation "\>" between 999932 and 0 is always true\.$#' - identifier: greater.alwaysTrue - count: 1 - path: app/controllers/general.php - - - - message: '#^Comparison operation "\>" between 999934 and 0 is always true\.$#' - identifier: greater.alwaysTrue - count: 1 - path: app/controllers/general.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 4 - path: app/controllers/general.php - - - - message: '#^Function router\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: app/controllers/general.php - - - - message: '#^Function router\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: app/controllers/general.php - - - - message: '#^Match expression does not handle remaining value\: ''deployment''$#' - identifier: match.unhandled - count: 1 - path: app/controllers/general.php - - - - message: '#^Offset ''code'' on array\{message\: string, code\: \(int\|string\), file\: string, line\: int, trace\: list\''\|''\:\:'', args\?\: list\, object\?\: object\}\>, version\: ''1\.8\.1'', type\: string\}\|array\{message\: string, code\: \(int\|string\), version\: ''1\.8\.1'', type\: string\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: app/controllers/general.php - - - - message: '#^Offset ''message'' on array\{message\: string, code\: \(int\|string\), file\: string, line\: int, trace\: list\''\|''\:\:'', args\?\: list\, object\?\: object\}\>, version\: ''1\.8\.1'', type\: string\}\|array\{message\: string, code\: \(int\|string\), version\: ''1\.8\.1'', type\: string\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: app/controllers/general.php - - - - message: '#^Offset ''type'' on array\{message\: string, code\: \(int\|string\), file\: string, line\: int, trace\: list\''\|''\:\:'', args\?\: list\, object\?\: object\}\>, version\: ''1\.8\.1'', type\: string\}\|array\{message\: string, code\: \(int\|string\), version\: ''1\.8\.1'', type\: string\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: app/controllers/general.php - - - - message: '#^Offset ''x\-appwrite\-trigger'' on non\-empty\-array\ on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: app/controllers/general.php - - - - message: '#^Offset ''x\-appwrite\-user\-id'' on non\-empty\-array\ on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: app/controllers/general.php - - - - message: '#^Offset ''x\-appwrite\-user\-jwt'' on non\-empty\-array\ on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$body of method Utopia\\Http\\Response\:\:send\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$code of method Appwrite\\Utopia\\Response\:\:setStatusCode\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$dbForProject of class Appwrite\\Utopia\\Request\\Filters\\V20 constructor expects Utopia\\Database\\Database\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$dsn of class Utopia\\DSN\\DSN constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$haystack of function str_ends_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$haystack of function str_starts_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$path of class Appwrite\\Utopia\\View constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array\ given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$resource of method Appwrite\\Event\\Delete\:\:setResource\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$sample of method Utopia\\Logger\\Logger\:\:setSample\(\) expects float, string given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$string of function ltrim expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$type of method Utopia\\Http\\Response\:\:setContentType\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$url of method Utopia\\Http\\Response\:\:redirect\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$value of function intval expects array\|bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#1 \$version of method Utopia\\Logger\\Log\:\:setVersion\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/general.php - - - - message: '#^Parameter \#2 \$default of method Appwrite\\Utopia\\Request\:\:getHeader\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/general.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\DSN\\DSN\:\:getParam\(\) expects string, float given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 9 - path: app/controllers/general.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 9 - path: app/controllers/general.php - - - - message: '#^Parameter \#2 \$key of class Utopia\\Logger\\Adapter\\Sentry constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/general.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addCookie\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/general.php - - - - message: '#^Parameter \$body of method Executor\\Executor\:\:createExecution\(\) expects string\|null, string\|false\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \$cpus of method Executor\\Executor\:\:createExecution\(\) expects float, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \$entrypoint of method Executor\\Executor\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \$image of method Executor\\Executor\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \$logging of method Executor\\Executor\:\:createExecution\(\) expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \$memory of method Executor\\Executor\:\:createExecution\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \$method of method Executor\\Executor\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \$path of method Executor\\Executor\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \$source of method Executor\\Executor\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \$spec of class Appwrite\\Bus\\Events\\ExecutionCompleted constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \$timeout of method Executor\\Executor\:\:createExecution\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Parameter \$version of method Executor\\Executor\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/general.php - - - - message: '#^Part \$platform\[''apiHostname''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: app/controllers/general.php - - - - message: '#^Part \$startCommand \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: app/controllers/general.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 3 - path: app/controllers/general.php - - message: '#^Result of method Utopia\\Http\\Response\:\:redirect\(\) \(void\) is used\.$#' identifier: method.void @@ -3708,24 +78,6 @@ parameters: count: 1 path: app/controllers/general.php - - - message: '#^Right side of && is always false\.$#' - identifier: booleanAnd.rightAlwaysFalse - count: 1 - path: app/controllers/general.php - - - - message: '#^Strict comparison using \=\=\= between ''deployment''\|''function''\|''site'' and ''functions'' will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: app/controllers/general.php - - - - message: '#^Strict comparison using \=\=\= between bool and non\-falsy\-string will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: app/controllers/general.php - - message: '#^Variable \$body on left side of \?\? always exists and is not nullable\.$#' identifier: nullCoalesce.variable @@ -3756,1284 +108,30 @@ parameters: count: 1 path: app/controllers/general.php - - - message: '#^Cannot call method getMethod\(\) on Utopia\\Http\\Route\|null\.$#' - identifier: method.nonObject - count: 2 - path: app/controllers/mock.php - - - - message: '#^Cannot call method getPath\(\) on Utopia\\Http\\Route\|null\.$#' - identifier: method.nonObject - count: 2 - path: app/controllers/mock.php - - - - message: '#^Cannot cast mixed to string\.$#' - identifier: cast.string - count: 1 - path: app/controllers/mock.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: app/controllers/mock.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/mock.php - - - - message: '#^Parameter \#1 \$body of method Utopia\\Http\\Response\:\:send\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/mock.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/controllers/mock.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/mock.php - - - - message: '#^Parameter \#2 \$privateKey of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/mock.php - - message: '#^Variable \$installation might not be defined\.$#' identifier: variable.undefined count: 1 path: app/controllers/mock.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 5 - path: app/controllers/shared/api.php - - - - message: '#^Binary operation "\+" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Binary operation "\-" between int\<0, max\> and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Binary operation "\." between ''bucket_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Binary operation "\." between ''label\:'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Binary operation "\." between mixed and '' \(role\: '' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/shared/api.php - - message: '#^Call to an undefined method Utopia\\Database\\Document\:\:getRoles\(\)\.$#' identifier: method.notFound count: 1 path: app/controllers/shared/api.php - - - message: '#^Call to function is_array\(\) with Appwrite\\SDK\\Method\|null will always evaluate to false\.$#' - identifier: function.impossibleType - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Cannot access offset ''confirm'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Cannot access offset ''label'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Cannot access offset ''maxSessions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Cannot access offset ''roles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Cannot access offset ''scopes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/shared/api.php - - - - message: '#^Cannot access offset ''teamId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/shared/api.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/shared/api.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 5 - path: app/controllers/shared/api.php - - - - message: '#^Cannot call method getGroups\(\) on Utopia\\Http\\Route\|null\.$#' - identifier: method.nonObject - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: app/controllers/shared/api.php - - - - message: '#^Cannot call method getLabel\(\) on Utopia\\Http\\Route\|null\.$#' - identifier: method.nonObject - count: 18 - path: app/controllers/shared/api.php - - - - message: '#^Cannot call method getParamsValues\(\) on Utopia\\Http\\Route\|null\.$#' - identifier: method.nonObject - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Cannot call method getPath\(\) on Utopia\\Http\\Route\|null\.$#' - identifier: method.nonObject - count: 6 - path: app/controllers/shared/api.php - - - - message: '#^Cannot call method isEmpty\(\) on Utopia\\Database\\Document\|null\.$#' - identifier: method.nonObject - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Cannot call method limit\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Cannot call method remaining\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Cannot call method setParam\(\) on mixed\.$#' - identifier: method.nonObject - count: 16 - path: app/controllers/shared/api.php - - - - message: '#^Cannot call method time\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Negated boolean expression is always true\.$#' - identifier: booleanNot.alwaysTrue - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Offset 0 on array\{string, string\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Offset 0 on non\-empty\-list\ on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Offset 1 on array\{list\, list\\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Offset 1 on array\{string, string\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$adapter of class Utopia\\Abuse\\Abuse constructor expects Utopia\\Abuse\\Adapter, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$array of function array_shift expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$array of function array_unique expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$body of method Utopia\\Http\\Response\:\:send\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$event of method Appwrite\\Event\\Event\:\:setEvent\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$haystack of function str_starts_with expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$haystack of function strrpos expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:member\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:team\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$label of closure expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$role of method Utopia\\Database\\Validator\\Authorization\:\:addRole\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$string of function md5 expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$string of function substr expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$type of method Utopia\\Http\\Response\:\:setContentType\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#2 \$data of method Utopia\\Cache\\Cache\:\:save\(\) expects array\\|string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#2 \$dimension of static method Utopia\\Database\\Helpers\\Role\:\:team\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:deleteDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 3 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:purgeCachedDocument\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:updateDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#2 \$needle of function str_ends_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, \(array\|float\|int\) given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/controllers/shared/api.php - - - - message: '#^Parameter \#2 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 2 - path: app/controllers/shared/api.php - - - - message: '#^Cannot access offset ''anonymous'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/shared/api/auth.php - - - - message: '#^Cannot access offset ''country'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/shared/api/auth.php - - - - message: '#^Cannot access offset ''email\-otp'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/shared/api/auth.php - - - - message: '#^Cannot access offset ''email\-password'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/shared/api/auth.php - - - - message: '#^Cannot access offset ''invites'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/shared/api/auth.php - - - - message: '#^Cannot access offset ''iso_code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/shared/api/auth.php - - - - message: '#^Cannot access offset ''jwt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/shared/api/auth.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: app/controllers/shared/api/auth.php - - - - message: '#^Cannot access offset ''magic\-url'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/shared/api/auth.php - - - - message: '#^Cannot access offset ''phone'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/shared/api/auth.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: app/controllers/shared/api/auth.php - - - - message: '#^Cannot call method getLabel\(\) on Utopia\\Http\\Route\|null\.$#' - identifier: method.nonObject - count: 1 - path: app/controllers/shared/api/auth.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/controllers/shared/api/auth.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: app/controllers/web/home.php - - - - message: '#^Binary operation "\." between mixed and ''\-'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/web/home.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/controllers/web/home.php - - - - message: '#^Cannot access offset ''dev'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/web/home.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/web/home.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/controllers/web/home.php - - - - message: '#^Cannot access offset ''sdks'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/web/home.php - - - - message: '#^Cannot access offset ''version'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/controllers/web/home.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: app/http.php - - - - message: '#^Binary operation "\*" between mixed and \(float\|int\) results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/http.php - - - - message: '#^Binary operation "\-" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: app/http.php - - - - message: '#^Binary operation "\." between ''Error log pushed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/http.php - - - - message: '#^Binary operation "\." between ''bucket_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/http.php - - - - message: '#^Cannot access offset ''\$collection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/http.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: app/http.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/http.php - - - - message: '#^Cannot access offset ''attributes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: app/http.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/http.php - - - - message: '#^Cannot access offset ''files'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/http.php - - - - message: '#^Cannot access offset ''filters'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/http.php - - - - message: '#^Cannot access offset ''format'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/http.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/http.php - - - - message: '#^Cannot access offset ''lengths'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/http.php - - - - message: '#^Cannot access offset ''orders'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/http.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/http.php - - - - message: '#^Cannot access offset ''signed'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/http.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/http.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: app/http.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/http.php - - - - message: '#^Cannot call method addExtra\(\) on mixed\.$#' - identifier: method.nonObject - count: 4 - path: app/http.php - - - - message: '#^Cannot call method addLog\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method addRole\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method addTag\(\) on mixed\.$#' - identifier: method.nonObject - count: 7 - path: app/http.php - - - - message: '#^Cannot call method cleanRoles\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method create\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method createCollection\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method get\(\) on mixed\.$#' - identifier: method.nonObject - count: 5 - path: app/http.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method getCollection\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method getResource\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method getRoles\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method getSequence\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method isEmpty\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method setAction\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method setEnvironment\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method setMessage\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method setNamespace\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method setResolver\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method setServer\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method setType\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method setUser\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: app/http.php - - - - message: '#^Cannot call method setVersion\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/http.php - - - - message: '#^Cannot call method skip\(\) on mixed\.$#' - identifier: method.nonObject - count: 5 - path: app/http.php - - - - message: '#^Cannot cast mixed to string\.$#' - identifier: cast.string - count: 1 - path: app/http.php - - - - message: '#^Cannot use \+\+ on mixed\.$#' - identifier: preInc.type - count: 1 - path: app/http.php - - - - message: '#^Function createDatabase\(\) has parameter \$collections with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: app/http.php - - - - message: '#^PHPDoc tag @var for variable \$collections has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: app/http.php - - - - message: '#^Parameter \#1 \$array of function array_key_last expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/http.php - - - - message: '#^Parameter \#1 \$authorization of method Appwrite\\Utopia\\Request\:\:setAuthorization\(\) expects Utopia\\Database\\Validator\\Authorization, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#1 \$authorization of method Appwrite\\Utopia\\Response\:\:setAuthorization\(\) expects Utopia\\Database\\Validator\\Authorization, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#1 \$callback of function array_map expects \(callable\(mixed\)\: mixed\)\|null, Closure\(array\)\: Utopia\\Database\\Document given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#1 \$content of method Swoole\\Http\\Response\:\:end\(\) expects string\|null, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#1 \$haystack of function str_ends_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#1 \$id of method Utopia\\Database\\Database\:\:createCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#1 \$id of method Utopia\\Database\\Database\:\:getCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: app/http.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#1 \$namespace of method Utopia\\Database\\Database\:\:setNamespace\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Database\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, Utopia\\Pools\\Pool\ given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#1 \$string of function ltrim expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#1 \$string of function md5 expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:cursorAfter\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 8 - path: app/http.php - - - - message: '#^Parameter \#2 \$cache of class Utopia\\Database\\Database constructor expects Utopia\\Cache\\Cache, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 5 - path: app/http.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 4 - path: app/http.php - - - - message: '#^Parameter \#2 \$value of static method Utopia\\Span\\Span\:\:add\(\) expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/http.php - - - - message: '#^Parameter \#4 \$collections of function createDatabase expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/http.php - - - - message: '#^Parameter \$port of class Swoole\\Http\\Server constructor expects int, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/http.php - - - - message: '#^Variable \$database might not be defined\.$#' - identifier: variable.undefined - count: 4 - path: app/http.php - - message: '#^Variable \$register might not be defined\.$#' identifier: variable.undefined count: 3 path: app/http.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: app/init/database/filters.php - - - - message: '#^Binary operation "\." between ''_APP_OPENSSL_KEY_V'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/init/database/filters.php - - - - message: '#^Binary operation "\." between ''label\:'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/init/database/filters.php - - - - message: '#^Cannot access offset ''content'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/database/filters.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/database/filters.php - - - - message: '#^Cannot access offset ''elements'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/database/filters.php - - - - message: '#^Cannot access offset ''iv'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/database/filters.php - - - - message: '#^Cannot access offset ''max'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/init/database/filters.php - - - - message: '#^Cannot access offset ''method'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/database/filters.php - - - - message: '#^Cannot access offset ''min'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/init/database/filters.php - - - - message: '#^Cannot access offset ''subject'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/database/filters.php - - - - message: '#^Cannot access offset ''tag'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/database/filters.php - - - - message: '#^Cannot access offset ''title'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/database/filters.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/database/filters.php - - - - message: '#^Cannot access offset ''version'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/database/filters.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/init/database/filters.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Database\\Document\:\:setAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/database/filters.php - - - - message: '#^Parameter \#1 \$string of function bin2hex expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/init/database/filters.php - - - - message: '#^Parameter \#1 \$string of function hex2bin expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/init/database/filters.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/database/filters.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: app/init/database/filters.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 16 - path: app/init/database/filters.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: app/init/database/filters.php - - - - message: '#^Parameter \#5 \$iv of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/init/database/filters.php - - - - message: '#^Parameter \#5 \$iv of static method Appwrite\\OpenSSL\\OpenSSL\:\:encrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/init/database/filters.php - - - - message: '#^Parameter \#6 \$tag of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/init/database/filters.php - - message: '#^Variable \$tag on left side of \?\? always exists and is always null\.$#' identifier: nullCoalesce.variable count: 1 path: app/init/database/filters.php - - - message: '#^Cannot access offset ''elements'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/database/formats.php - - - - message: '#^Cannot access offset ''formatOptions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: app/init/database/formats.php - - - - message: '#^Cannot access offset ''max'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/init/database/formats.php - - - - message: '#^Cannot access offset ''min'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/init/database/formats.php - - - - message: '#^Parameter \#1 \$list of class Utopia\\Validator\\WhiteList constructor expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/database/formats.php - - - - message: '#^Parameter \#1 \$min of class Utopia\\Validator\\Range constructor expects float\|int, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/init/database/formats.php - - - - message: '#^Parameter \#2 \$max of class Utopia\\Validator\\Range constructor expects float\|int, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/init/database/formats.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: app/init/locales.php - - - - message: '#^Binary operation "\." between literal\-string&non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/init/locales.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/locales.php - - - - message: '#^Parameter \#1 \$name of static method Utopia\\Locale\\Locale\:\:setLanguageFromJSON\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/locales.php - - - - message: '#^Parameter \#1 \$string of function substr expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/locales.php - - message: '#^Anonymous function has an unused use \$dsn\.$#' identifier: closure.unusedUse @@ -5041,241 +139,13 @@ parameters: path: app/init/registers.php - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: app/init/registers.php - - - - message: '#^Binary operation "/" between mixed and int results in an error\.$#' + message: '#^Binary operation "/" between string and string results in an error\.$#' identifier: binaryOp.invalid count: 1 path: app/init/registers.php - - message: '#^Binary operation "/" between string\|null and string\|null results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/init/registers.php - - - - message: '#^Cannot call method setDatabase\(\) on Utopia\\Database\\Adapter\\MariaDB\|Utopia\\Database\\Adapter\\Mongo\|Utopia\\Database\\Adapter\\MySQL\|Utopia\\Database\\Adapter\\Postgres\|null\.$#' - identifier: method.nonObject - count: 1 - path: app/init/registers.php - - - - message: '#^Match arm comparison between ''redis'' and ''redis'' is always true\.$#' - identifier: match.alwaysTrue - count: 1 - path: app/init/registers.php - - - - message: '#^Offset ''host'' might not exist on array\{key\: string\|null, projectId\: string, host\: non\-falsy\-string\}\|array\{key\: string\}\|array\{ticket\: string, host\: string\}\.$#' - identifier: offsetAccess.notFound - count: 2 - path: app/init/registers.php - - - - message: '#^Offset ''host'' might not exist on array\{key\: string\|null, projectId\: string, host\: string\}\|array\{key\: string\}\|array\{ticket\: string, host\: string\}\.$#' - identifier: offsetAccess.notFound - count: 2 - path: app/init/registers.php - - - - message: '#^Offset ''key'' might not exist on array\{key\: string\|null, projectId\: string, host\: non\-falsy\-string\}\|array\{key\: string\}\|array\{ticket\: string, host\: string\}\.$#' - identifier: offsetAccess.notFound - count: 3 - path: app/init/registers.php - - - - message: '#^Offset ''key'' might not exist on array\{key\: string\|null, projectId\: string, host\: string\}\|array\{key\: string\}\|array\{ticket\: string, host\: string\}\.$#' - identifier: offsetAccess.notFound - count: 3 - path: app/init/registers.php - - - - message: '#^Offset ''multiple'' on array\{type\: ''cache'', dsns\: non\-falsy\-string, multiple\: true, schemes\: array\{''redis''\}\}\|array\{type\: ''consumer''\|''publisher''\|''pubsub'', dsns\: non\-falsy\-string, multiple\: false, schemes\: array\{''redis''\}\}\|array\{type\: ''database'', dsns\: string\|null, multiple\: bool, schemes\: array\{''mariadb'', ''mongodb'', ''mysql'', ''postgresql''\}\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: app/init/registers.php - - - - message: '#^Offset ''projectId'' might not exist on array\{key\: string\|null, projectId\: string, host\: non\-falsy\-string\}\|array\{key\: string\}\|array\{ticket\: string, host\: string\}\.$#' - identifier: offsetAccess.notFound - count: 1 - path: app/init/registers.php - - - - message: '#^Offset ''projectId'' might not exist on array\{key\: string\|null, projectId\: string, host\: string\}\|array\{key\: string\}\|array\{ticket\: string, host\: string\}\.$#' - identifier: offsetAccess.notFound - count: 1 - path: app/init/registers.php - - - - message: '#^Offset ''schemes'' on array\{type\: ''cache'', dsns\: non\-falsy\-string, multiple\: true, schemes\: array\{''redis''\}\}\|array\{type\: ''consumer''\|''publisher''\|''pubsub'', dsns\: non\-falsy\-string, multiple\: false, schemes\: array\{''redis''\}\}\|array\{type\: ''database'', dsns\: string\|null, multiple\: bool, schemes\: array\{''mariadb'', ''mongodb'', ''mysql'', ''postgresql''\}\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: app/init/registers.php - - - - message: '#^Offset ''ticket'' might not exist on array\{key\: string\|null, projectId\: string, host\: non\-falsy\-string\}\|array\{key\: string\}\|array\{ticket\: string, host\: string\}\.$#' - identifier: offsetAccess.notFound - count: 1 - path: app/init/registers.php - - - - message: '#^Offset ''ticket'' might not exist on array\{key\: string\|null, projectId\: string, host\: string\}\|array\{key\: string\}\|array\{ticket\: string, host\: string\}\.$#' - identifier: offsetAccess.notFound - count: 1 - path: app/init/registers.php - - - - message: '#^Offset ''type'' on array\{type\: ''cache'', dsns\: non\-falsy\-string, multiple\: true, schemes\: array\{''redis''\}\}\|array\{type\: ''consumer''\|''publisher''\|''pubsub'', dsns\: non\-falsy\-string, multiple\: false, schemes\: array\{''redis''\}\}\|array\{type\: ''database'', dsns\: string\|null, multiple\: bool, schemes\: array\{''mariadb'', ''mongodb'', ''mysql'', ''postgresql''\}\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: app/init/registers.php - - - - message: '#^Offset 0 on non\-empty\-list\ on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: app/init/registers.php - - - - message: '#^Parameter \#1 \$address of method PHPMailer\\PHPMailer\\PHPMailer\:\:addReplyTo\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/registers.php - - - - message: '#^Parameter \#1 \$address of method PHPMailer\\PHPMailer\\PHPMailer\:\:setFrom\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/registers.php - - - - message: '#^Parameter \#1 \$client of class Appwrite\\PubSub\\Adapter\\Redis constructor expects Redis, Redis\|Swoole\\Database\\PDOProxy\|Utopia\\Mongo\\Client given\.$#' - identifier: argument.type - count: 1 - path: app/init/registers.php - - - - message: '#^Parameter \#1 \$client of class Utopia\\Database\\Adapter\\Mongo constructor expects Utopia\\Mongo\\Client, Redis\|Swoole\\Database\\PDOProxy\|Utopia\\Mongo\\Client given\.$#' - identifier: argument.type - count: 1 - path: app/init/registers.php - - - - message: '#^Parameter \#1 \$database of class Utopia\\Mongo\\Client constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: app/init/registers.php - - - - message: '#^Parameter \#1 \$key of class Utopia\\Logger\\Adapter\\AppSignal constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: app/init/registers.php - - - - message: '#^Parameter \#1 \$key of class Utopia\\Logger\\Adapter\\Raygun constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: app/init/registers.php - - - - message: '#^Parameter \#1 \$listener of method Utopia\\Bus\\Bus\:\:subscribe\(\) expects Utopia\\Bus\\Listener, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/registers.php - - - - message: '#^Parameter \#1 \$redis of class Utopia\\Cache\\Adapter\\Redis constructor expects Redis, Redis\|Swoole\\Database\\PDOProxy\|Utopia\\Mongo\\Client given\.$#' - identifier: argument.type - count: 1 - path: app/init/registers.php - - - - message: '#^Parameter \#1 \$string of function urldecode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/registers.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Http\\Http\:\:setMode\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/registers.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 7 - path: app/init/registers.php - - - - message: '#^Parameter \#2 \$host of class Utopia\\Mongo\\Client constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/registers.php - - - - message: '#^Parameter \#2 \$key of class Utopia\\Logger\\Adapter\\Sentry constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: app/init/registers.php - - - - message: '#^Parameter \#2 \$port of class Utopia\\Queue\\Connection\\Redis constructor expects int, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/registers.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/init/registers.php - - - - message: '#^Parameter \#4 \$user of class Utopia\\Mongo\\Client constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: app/init/registers.php - - - - message: '#^Parameter \#5 \$password of class Utopia\\Mongo\\Client constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: app/init/registers.php - - - - message: '#^Property PHPMailer\\PHPMailer\\PHPMailer\:\:\$Host \(string\) does not accept string\|null\.$#' - identifier: assign.propertyType - count: 1 - path: app/init/registers.php - - - - message: '#^Property PHPMailer\\PHPMailer\\PHPMailer\:\:\$Password \(string\) does not accept string\|null\.$#' - identifier: assign.propertyType - count: 1 - path: app/init/registers.php - - - - message: '#^Property PHPMailer\\PHPMailer\\PHPMailer\:\:\$Port \(int\) does not accept string\|null\.$#' - identifier: assign.propertyType - count: 1 - path: app/init/registers.php - - - - message: '#^Property PHPMailer\\PHPMailer\\PHPMailer\:\:\$SMTPSecure \(string\) does not accept string\|null\.$#' - identifier: assign.propertyType - count: 1 - path: app/init/registers.php - - - - message: '#^Property PHPMailer\\PHPMailer\\PHPMailer\:\:\$Username \(string\) does not accept string\|null\.$#' + message: '#^Property PHPMailer\\PHPMailer\\PHPMailer\:\:\$Port \(int\) does not accept string\.$#' identifier: assign.propertyType count: 1 path: app/init/registers.php @@ -5292,660 +162,6 @@ parameters: count: 1 path: app/init/registers.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: app/init/resources.php - - - - message: '#^Binary operation "\*" between \-1 and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/init/resources.php - - - - message: '#^Binary operation "\*" between int and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/init/resources.php - - - - message: '#^Binary operation "\*" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 5 - path: app/init/resources.php - - - - message: '#^Binary operation "\." between ''/storage/builds/app\-'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/init/resources.php - - - - message: '#^Binary operation "\." between ''/storage/functions…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/init/resources.php - - - - message: '#^Binary operation "\." between ''/storage/imports…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/init/resources.php - - - - message: '#^Binary operation "\." between ''/storage/sites/app\-'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/init/resources.php - - - - message: '#^Binary operation "\." between ''/storage/uploads…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/init/resources.php - - - - message: '#^Binary operation "\." between ''mysql\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: app/init/resources.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot access offset ''allowedHeaders'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot access offset ''allowedMethods'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot access offset ''exposedHeaders'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot access offset ''sdks'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot access offset ''server'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot call method find\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot call method get\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: app/init/resources.php - - - - message: '#^Cannot call method getArrayCopy\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 13 - path: app/init/resources.php - - - - message: '#^Cannot call method getDocument\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot call method getHeader\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot call method getId\(\) on Utopia\\Database\\Document\|null\.$#' - identifier: method.nonObject - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 8 - path: app/init/resources.php - - - - message: '#^Cannot call method getParam\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot call method isEmpty\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: app/init/resources.php - - - - message: '#^Cannot call method setAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 4 - path: app/init/resources.php - - - - message: '#^Cannot call method setDefaultStatus\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot call method skip\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: app/init/resources.php - - - - message: '#^Cannot call method updateDocument\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/init/resources.php - - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 1 - path: app/init/resources.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: app/init/resources.php - - - - message: '#^If condition is always true\.$#' - identifier: if.alwaysTrue - count: 2 - path: app/init/resources.php - - - - message: '#^Only iterables can be unpacked, mixed given\.$#' - identifier: arrayUnpacking.nonIterable - count: 2 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$allowedHostnames of class Appwrite\\Network\\Validator\\Origin constructor expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$allowedHostnames of class Appwrite\\Network\\Validator\\Redirect constructor expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$allowedHosts of class Appwrite\\Network\\Cors constructor expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$data of method Utopia\\Auth\\Store\:\:decode\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$db of class Utopia\\Audit\\Adapter\\Database constructor expects Utopia\\Database\\Database, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$default of class Utopia\\Locale\\Locale constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$dsn of class Utopia\\DSN\\DSN constructor expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$event of closure expects string, mixed given\.$#' - identifier: argument.type - count: 8 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$host of method Redis\:\:pconnect\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Http\\Adapter\\Swoole\\Request\:\:getCookie\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$name of class Utopia\\Queue\\Queue constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Locale\\Locale\:\:setFallback\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Pools\\Group\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$platforms of static method Appwrite\\Network\\Platform\:\:getHostnames\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$platforms of static method Appwrite\\Network\\Platform\:\:getSchemes\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Cache\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, Utopia\\Pools\\Pool\ given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Database\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, Utopia\\Pools\\Pool\ given\.$#' - identifier: argument.type - count: 4 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$secret of method Appwrite\\Utopia\\Database\\Documents\\User\:\:sessionVerify\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$token of method Ahc\\Jwt\\JWT\:\:decode\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#1 \$utopia of static method Appwrite\\GraphQL\\Schema\:\:build\(\) expects Utopia\\Http\\Http, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$accessKey of class Utopia\\Storage\\Device\\AWS constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$accessKey of class Utopia\\Storage\\Device\\Backblaze constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$accessKey of class Utopia\\Storage\\Device\\DOSpaces constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$accessKey of class Utopia\\Storage\\Device\\Linode constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$accessKey of class Utopia\\Storage\\Device\\S3 constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$accessKey of class Utopia\\Storage\\Device\\Wasabi constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$allowedSchemes of class Appwrite\\Network\\Validator\\Origin constructor expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$allowedSchemes of class Appwrite\\Network\\Validator\\Redirect constructor expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$cache of class Utopia\\Database\\Database constructor expects Utopia\\Cache\\Cache, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$default of method Appwrite\\Utopia\\Request\:\:getHeader\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$document of closure expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 9 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:updateDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 4 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, int\|string given\.$#' - identifier: argument.type - count: 2 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 3 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$value of method Appwrite\\Usage\\Context\:\:addMetric\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 17 - path: app/init/resources.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#3 \$secretKey of class Utopia\\Storage\\Device\\AWS constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#3 \$secretKey of class Utopia\\Storage\\Device\\Backblaze constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#3 \$secretKey of class Utopia\\Storage\\Device\\DOSpaces constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#3 \$secretKey of class Utopia\\Storage\\Device\\Linode constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#3 \$secretKey of class Utopia\\Storage\\Device\\S3 constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#3 \$secretKey of class Utopia\\Storage\\Device\\Wasabi constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#4 \$bucket of class Utopia\\Storage\\Device\\AWS constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#4 \$bucket of class Utopia\\Storage\\Device\\Backblaze constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#4 \$bucket of class Utopia\\Storage\\Device\\DOSpaces constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#4 \$bucket of class Utopia\\Storage\\Device\\Linode constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#4 \$bucket of class Utopia\\Storage\\Device\\Wasabi constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#5 \$queueForFunctions of closure expects Appwrite\\Event\\Func, Appwrite\\Event\\Event given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#5 \$region of class Utopia\\Storage\\Device\\AWS constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#5 \$region of class Utopia\\Storage\\Device\\Backblaze constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#5 \$region of class Utopia\\Storage\\Device\\DOSpaces constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#5 \$region of class Utopia\\Storage\\Device\\Linode constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#5 \$region of class Utopia\\Storage\\Device\\S3 constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#5 \$region of class Utopia\\Storage\\Device\\Wasabi constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#6 \$queueForWebhooks of closure expects Appwrite\\Event\\Webhook, Appwrite\\Event\\Event given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \#7 \$queueForRealtime of closure expects Appwrite\\Event\\Realtime, Appwrite\\Event\\Event given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \$allowedHeaders of class Appwrite\\Network\\Cors constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \$allowedMethods of class Appwrite\\Network\\Cors constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Parameter \$exposedHeaders of class Appwrite\\Network\\Cors constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/init/resources.php - - - - message: '#^Part \$args\[''documentId''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 3 - path: app/init/resources.php - - - - message: '#^Strict comparison using \!\=\= between lowercase\-string and ''UNKNOWN'' will always evaluate to true\.$#' - identifier: notIdentical.alwaysTrue - count: 1 - path: app/init/resources.php - - message: '#^Variable \$hostname on left side of \?\? always exists and is not nullable\.$#' identifier: nullCoalesce.variable @@ -5958,228 +174,12 @@ parameters: count: 4 path: app/realtime.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: app/realtime.php - - - - message: '#^Binary operation "\+\=" between mixed and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: app/realtime.php - - - - message: '#^Binary operation "\." between ''Error log pushed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/realtime.php - - - - message: '#^Binary operation "\." between ''mysql\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/realtime.php - - - - message: '#^Binary operation "\." between ''team\:'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/realtime.php - - - - message: '#^Binary operation "\." between ''user\:'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: app/realtime.php - - - - message: '#^Cannot access offset ''authorization'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: app/realtime.php - - - - message: '#^Cannot access offset ''channels'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/realtime.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/realtime.php - - - - message: '#^Cannot access offset ''permissionsChanged'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/realtime.php - - - - message: '#^Cannot access offset ''project'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/realtime.php - - - - message: '#^Cannot access offset ''projectId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: app/realtime.php - - - - message: '#^Cannot access offset ''queries'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: app/realtime.php - - - - message: '#^Cannot access offset ''subscriptions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/realtime.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/realtime.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/realtime.php - - - - message: '#^Cannot access offset string\|null on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: app/realtime.php - - - - message: '#^Cannot call method add\(\) on mixed\.$#' - identifier: method.nonObject - count: 4 - path: app/realtime.php - - - - message: '#^Cannot call method addLog\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/realtime.php - - - - message: '#^Cannot call method get\(\) on mixed\.$#' - identifier: method.nonObject - count: 5 - path: app/realtime.php - - - - message: '#^Cannot call method getDescription\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/realtime.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: app/realtime.php - - - - message: '#^Cannot call method getRoles\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: app/realtime.php - - - - message: '#^Cannot call method isEmpty\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: app/realtime.php - - - - message: '#^Cannot call method isValid\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/realtime.php - - - - message: '#^Cannot call method setParam\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: app/realtime.php - - - - message: '#^Cannot call method skip\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/realtime.php - - message: '#^Class Utopia\\Database\\Validator\\Authorization does not have a constructor and must be instantiated without any parameters\.$#' identifier: new.noConstructor count: 1 path: app/realtime.php - - - message: '#^Function getCache\(\) should return Utopia\\Cache\\Cache but returns mixed\.$#' - identifier: return.type - count: 1 - path: app/realtime.php - - - - message: '#^Function getConsoleDB\(\) should return Utopia\\Database\\Database but returns mixed\.$#' - identifier: return.type - count: 1 - path: app/realtime.php - - - - message: '#^Function getProjectDB\(\) should return Utopia\\Database\\Database but returns mixed\.$#' - identifier: return.type - count: 1 - path: app/realtime.php - - - - message: '#^Function getRealtime\(\) should return Appwrite\\Messaging\\Adapter\\Realtime but returns mixed\.$#' - identifier: return.type - count: 1 - path: app/realtime.php - - - - message: '#^Function getRedis\(\) should return Redis but returns mixed\.$#' - identifier: return.type - count: 1 - path: app/realtime.php - - - - message: '#^Function getTelemetry\(\) should return Utopia\\Telemetry\\Adapter but returns mixed\.$#' - identifier: return.type - count: 1 - path: app/realtime.php - - - - message: '#^Function getTimelimit\(\) should return Utopia\\Abuse\\Adapters\\TimeLimit\\Redis but returns mixed\.$#' - identifier: return.type - count: 1 - path: app/realtime.php - - - - message: '#^Function logError\(\) has parameter \$tags with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: app/realtime.php - - - - message: '#^Function triggerStats\(\) has parameter \$event with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: app/realtime.php - - message: '#^Function triggerStats\(\) returns void but does not have any side effects\.$#' identifier: void.pure @@ -6187,4511 +187,35 @@ parameters: path: app/realtime.php - - message: '#^Parameter \#1 \$adapter of class Utopia\\Abuse\\Abuse constructor expects Utopia\\Abuse\\Adapter, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$array of function array_key_first expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$array of function reset expects array\|object, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$authorization of method Utopia\\Database\\Database\:\:setAuthorization\(\) expects Utopia\\Database\\Validator\\Authorization, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$channels of static method Appwrite\\Messaging\\Adapter\\Realtime\:\:convertChannels\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$data of method Utopia\\Auth\\Store\:\:decode\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$dsn of class Utopia\\DSN\\DSN constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$event of method Appwrite\\Messaging\\Adapter\\Realtime\:\:getSubscribers\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$host of method Redis\:\:pconnect\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$key of method Swoole\\Table\:\:decr\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$key of method Swoole\\Table\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$key of method Swoole\\Table\:\:incr\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Http\\Request\:\:getQuery\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Pools\\Group\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$pool of class Appwrite\\PubSub\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Cache\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, Utopia\\Pools\\Pool\ given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Database\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, Utopia\\Pools\\Pool\ given\.$#' - identifier: argument.type - count: 2 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$project of function getProjectDB expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$projectId of method Appwrite\\Messaging\\Adapter\\Realtime\:\:hasSubscriber\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$projectId of method Appwrite\\Messaging\\Adapter\\Realtime\:\:subscribe\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$roles of static method Appwrite\\Utopia\\Database\\Documents\\User\:\:isApp\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$roles of static method Appwrite\\Utopia\\Database\\Documents\\User\:\:isPrivileged\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$secret of method Appwrite\\Utopia\\Database\\Documents\\User\:\:sessionVerify\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, string\|false given\.$#' - identifier: argument.type - count: 4 - path: app/realtime.php - - - - message: '#^Parameter \#1 \$version of method Utopia\\Logger\\Log\:\:setVersion\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/realtime.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 4 - path: app/realtime.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, string\|false given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: app/realtime.php - - - - message: '#^Parameter \#2 \$message of class Appwrite\\Extend\\Exception constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#2 \$message of method Utopia\\WebSocket\\Server\:\:send\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 8 - path: app/realtime.php - - - - message: '#^Parameter \#2 \$projectId of function triggerStats expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: app/realtime.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Abuse\\Adapter\:\:setParam\(\) expects string, int given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Logger\\Log\:\:addTag\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \#5 \$channels of method Appwrite\\Messaging\\Adapter\\Realtime\:\:subscribe\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/realtime.php - - - - message: '#^Parameter \#6 \$queryGroup of method Appwrite\\Messaging\\Adapter\\Realtime\:\:subscribe\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \$authorization of function logError expects Utopia\\Database\\Validator\\Authorization\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/realtime.php - - - - message: '#^Parameter \$port of class Utopia\\WebSocket\\Adapter\\Swoole constructor expects int, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Parameter \$project of function logError expects Utopia\\Database\\Document\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/realtime.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 5 - path: app/realtime.php - - - - message: '#^Trying to invoke mixed but it''s not a callable\.$#' - identifier: callable.nonCallable - count: 1 - path: app/realtime.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: app/worker.php - - - - message: '#^Binary operation "\*" between \-1 and string\|null results in an error\.$#' + message: '#^Binary operation "\*" between \-1 and string results in an error\.$#' identifier: binaryOp.invalid count: 3 path: app/worker.php - - - message: '#^Binary operation "\." between ''Error log pushed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: app/worker.php - - - - message: '#^Binary operation "\." between ''mysql\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: app/worker.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: app/worker.php - - - - message: '#^Cannot call method addLog\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/worker.php - - - - message: '#^Cannot call method get\(\) on mixed\.$#' - identifier: method.nonObject - count: 6 - path: app/worker.php - - - - message: '#^Cannot call method getResource\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/worker.php - - - - message: '#^Cannot call method pop\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/worker.php - - - - message: '#^Cannot call method setResolver\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: app/worker.php - - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 1 - path: app/worker.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 4 - path: app/worker.php - - - - message: '#^Parameter \#1 \$array of function array_shift expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/worker.php - - - - message: '#^Parameter \#1 \$db of class Utopia\\Audit\\Adapter\\Database constructor expects Utopia\\Database\\Database, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/worker.php - - - - message: '#^Parameter \#1 \$dsn of class Utopia\\DSN\\DSN constructor expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/worker.php - - - - message: '#^Parameter \#1 \$haystack of function str_starts_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/worker.php - - - - message: '#^Parameter \#1 \$host of method Redis\:\:pconnect\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/worker.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/worker.php - - - - message: '#^Parameter \#1 \$name of class Utopia\\Queue\\Queue constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: app/worker.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Cache\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/worker.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Database\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, Utopia\\Pools\\Pool\ given\.$#' - identifier: argument.type - count: 2 - path: app/worker.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Database\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/worker.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: app/worker.php - - - - message: '#^Parameter \#1 \$version of method Utopia\\Logger\\Log\:\:setVersion\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: app/worker.php - - - - message: '#^Parameter \#2 \$cache of class Utopia\\Database\\Database constructor expects Utopia\\Cache\\Cache, mixed given\.$#' - identifier: argument.type - count: 1 - path: app/worker.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 6 - path: app/worker.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, string\|false given\.$#' - identifier: argument.type - count: 2 - path: app/worker.php - - - - message: '#^Parameter \#2 \$seconds of static method Utopia\\Database\\DateTime\:\:addSeconds\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 3 - path: app/worker.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 3 - path: app/worker.php - - - - message: '#^Result of && is always false\.$#' - identifier: booleanAnd.alwaysFalse - count: 3 - path: app/worker.php - - - - message: '#^Strict comparison using \!\=\= between null and null will always evaluate to false\.$#' - identifier: notIdentical.alwaysFalse - count: 1 - path: app/worker.php - - - - message: '#^Cannot access offset ''apps'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Cannot access offset ''guests'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Cannot access offset ''scopes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 9 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Method Appwrite\\Auth\\Key\:\:__construct\(\) has parameter \$disabledMetrics with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Method Appwrite\\Auth\\Key\:\:__construct\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Method Appwrite\\Auth\\Key\:\:getDisabledMetrics\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Method Appwrite\\Auth\\Key\:\:getScopes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Parameter \#1 \$projectId of class Appwrite\\Auth\\Key constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Parameter \#1 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Parameter \#10 \$hostnameOverride of class Appwrite\\Auth\\Key constructor expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Parameter \#11 \$bannerDisabled of class Appwrite\\Auth\\Key constructor expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Parameter \#12 \$projectCheckDisabled of class Appwrite\\Auth\\Key constructor expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Parameter \#13 \$previewAuthDisabled of class Appwrite\\Auth\\Key constructor expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Parameter \#14 \$deploymentStatusIgnored of class Appwrite\\Auth\\Key constructor expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Parameter \#2 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Parameter \#6 \$scopes of class Appwrite\\Auth\\Key constructor expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Parameter \#7 \$name of class Appwrite\\Auth\\Key constructor expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Parameter \#9 \$disabledMetrics of class Appwrite\\Auth\\Key constructor expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Parameter \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/Key.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/MFA/Challenge/TOTP.php - - - - message: '#^Cannot call method getAttribute\(\) on Utopia\\Database\\Document\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Auth/MFA/Challenge/TOTP.php - - - - message: '#^Parameter \#1 \$secret of static method OTPHP\\TOTP\:\:create\(\) expects non\-empty\-string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/MFA/Challenge/TOTP.php - - - - message: '#^Method Appwrite\\Auth\\MFA\\Type\:\:generateBackupCodes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/MFA/Type.php - - - - message: '#^Parameter \#1 \$issuer of method OTPHP\\OTP\:\:setIssuer\(\) expects non\-empty\-string, string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/MFA/Type.php - - - - message: '#^Parameter \#1 \$label of method OTPHP\\OTP\:\:setLabel\(\) expects non\-empty\-string, string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/MFA/Type.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Auth/MFA/Type/TOTP.php - - - - message: '#^Parameter \#1 \$secret of static method OTPHP\\TOTP\:\:create\(\) expects non\-empty\-string\|null, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/MFA/Type/TOTP.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\:\:__construct\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\:\:__construct\(\) has parameter \$state with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\:\:getAccessToken\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\:\:getAccessTokenExpiry\(\) should return int but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\:\:getRefreshToken\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\:\:getScopes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\:\:parseState\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\:\:parseState\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\:\:request\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - message: '#^PHPDoc tag @return with type string is incompatible with native type int\.$#' identifier: return.phpDocType count: 1 path: src/Appwrite/Auth/OAuth2.php - - - message: '#^Parameter \#1 \$response of class Appwrite\\Auth\\OAuth2\\Exception constructor expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Parameter \#1 \$scope of method Appwrite\\Auth\\OAuth2\:\:addScope\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects bool, int given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects non\-empty\-string\|null, string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\:\:\$state type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Amazon\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Amazon.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Amazon\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Amazon.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Amazon\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Amazon.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Amazon\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Amazon.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Amazon\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Amazon.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Amazon\:\:parseState\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Amazon.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Amazon\:\:parseState\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Amazon.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Amazon\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Amazon.php - - - - message: '#^Parameter \#1 \$string of function urlencode expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Amazon.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Amazon\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Amazon.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Amazon\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Amazon.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Amazon\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Amazon.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Amazon\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Amazon.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Amazon\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Amazon.php - - - - message: '#^Cannot access offset ''keyID'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Cannot access offset ''p8'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Cannot access offset ''teamID'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Cannot access offset 1 on array\|false\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Dead catch \- Throwable is never thrown in the try block\.$#' - identifier: catch.neverThrown - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Apple\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Apple\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Apple\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Apple\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Parameter \#1 \$data of method Appwrite\\Auth\\OAuth2\\Apple\:\:encode\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Parameter \#1 \$der of method Appwrite\\Auth\\OAuth2\\Apple\:\:fromDER\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Parameter \#1 \$private_key of function openssl_pkey_get_private expects array\|OpenSSLAsymmetricKey\|OpenSSLCertificate\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Parameter \#1 \$string of function mb_substr expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Parameter \#2 \$start of function mb_substr expects int, float\|int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Parameter \#3 \$length of function mb_substr expects int\|null, float\|int given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Parameter \#3 \$private_key of function openssl_sign expects array\|OpenSSLAsymmetricKey\|OpenSSLCertificate\|string, OpenSSLAsymmetricKey\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Apple\:\:\$claims \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Apple\:\:\$claims type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Apple\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Apple\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Apple\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Apple\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Apple.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Auth0\:\:getAppSecret\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Auth0.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Auth0\:\:getAppSecret\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Auth0.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Auth0\:\:getAuth0Domain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Auth0.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Auth0\:\:getClientSecret\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Auth0.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Auth0\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Auth0.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Auth0\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Auth0.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Auth0\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Auth0.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Auth0\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Auth0.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Auth0\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Auth0.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Auth0\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Auth0.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Auth0\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Auth0.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Auth0\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Auth0.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Auth0\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Auth0.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Auth0\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Auth0.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Auth0\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Auth0.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Authentik\:\:getAppSecret\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Authentik.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Authentik\:\:getAppSecret\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Authentik.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Authentik\:\:getAuthentikDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Authentik.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Authentik\:\:getClientSecret\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Authentik.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Authentik\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Authentik.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Authentik\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Authentik.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Authentik\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Authentik.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Authentik\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Authentik.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Authentik\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Authentik.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Authentik\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Authentik.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Authentik\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Authentik.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Authentik\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Authentik.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Authentik\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Authentik.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Authentik\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Authentik.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Authentik\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Authentik.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Autodesk\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Autodesk.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Autodesk\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Autodesk.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Autodesk\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Autodesk.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Autodesk\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Autodesk.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Autodesk\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Autodesk.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Autodesk\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Autodesk.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Autodesk\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Autodesk.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Autodesk\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Autodesk.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Autodesk\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Autodesk.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Autodesk\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Autodesk.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Autodesk\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Autodesk.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitbucket.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitbucket.php - - - - message: '#^Cannot access offset ''is_confirmed'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitbucket.php - - - - message: '#^Cannot access offset ''values'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitbucket.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Bitbucket\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitbucket.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Bitbucket\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitbucket.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Bitbucket\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitbucket.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Bitbucket\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitbucket.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Bitbucket\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitbucket.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Bitbucket\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitbucket.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Bitbucket\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitbucket.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Bitbucket\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Bitbucket.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Bitbucket\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitbucket.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Bitbucket\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitbucket.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Bitbucket\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitbucket.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitly.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitly.php - - - - message: '#^Cannot access offset ''is_verified'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitly.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Bitly\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitly.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Bitly\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitly.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Bitly\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitly.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Bitly\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitly.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Bitly\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitly.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Bitly\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitly.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Bitly\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitly.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Bitly\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitly.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Bitly\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitly.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Bitly\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Bitly.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Box\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Box.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Box\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Box.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Box\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Box.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Box\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Box.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Box\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Box.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Box\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Box.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Box\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Box.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Box\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Box.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Box\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Box.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Box\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Box.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Box\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Box.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Dailymotion\:\:getFields\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Dailymotion.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Dailymotion\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Dailymotion.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Dailymotion\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Dailymotion.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Dailymotion\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Dailymotion.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Dailymotion\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Dailymotion.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Dailymotion\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Dailymotion.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Dailymotion\:\:isEmailVerified\(\) should return bool but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Dailymotion.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Dailymotion\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Dailymotion.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Dailymotion\:\:\$fields type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Dailymotion.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Dailymotion\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Dailymotion.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Dailymotion\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Dailymotion.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Dailymotion\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Dailymotion.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Dailymotion\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Dailymotion.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Dailymotion\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Dailymotion.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Discord\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Discord.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Discord\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Discord.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Discord\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Discord.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Discord\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Discord.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Discord\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Discord.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Discord\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Discord.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Discord\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Discord.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Discord\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Discord.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Discord\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Discord.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Discord\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Discord.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Discord\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Discord.php - - - - message: '#^Cannot access offset ''response'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Disqus.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Disqus\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Disqus.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Disqus\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Disqus.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Disqus\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Disqus.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Disqus\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Disqus.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Disqus\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Disqus.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Disqus\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Disqus.php - - message: '#^PHPDoc tag @param references unknown parameter\: \$token$#' identifier: parameter.notFound count: 1 path: src/Appwrite/Auth/OAuth2/Disqus.php - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Disqus\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Disqus.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Disqus\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Disqus.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Disqus\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Disqus.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Disqus\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Disqus.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Disqus\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Disqus.php - - - - message: '#^Cannot access offset ''display_name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Dropbox.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Dropbox\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Dropbox.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Dropbox\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Dropbox.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Dropbox\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Dropbox.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Dropbox\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Dropbox.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Dropbox\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Dropbox.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Dropbox\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Dropbox.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Dropbox\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Dropbox.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Dropbox\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Dropbox.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Dropbox\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Dropbox.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Dropbox\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Dropbox.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Dropbox\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Dropbox.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Etsy\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Etsy.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Etsy\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Etsy.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Etsy\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Etsy.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Etsy\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Etsy.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Etsy\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Etsy.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Etsy\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Etsy.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Etsy\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Etsy.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Etsy\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Etsy.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Etsy\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Etsy.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Etsy\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Etsy.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Etsy\:\:\$version is never read, only written\.$#' - identifier: property.onlyWritten - count: 1 - path: src/Appwrite/Auth/OAuth2/Etsy.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Exception.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Exception\:\:\$error \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 3 - path: src/Appwrite/Auth/OAuth2/Exception.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Exception\:\:\$errorDescription \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 3 - path: src/Appwrite/Auth/OAuth2/Exception.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Facebook\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Facebook.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Facebook\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Facebook.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Facebook\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Facebook.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Facebook\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Facebook.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Facebook\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Facebook.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Facebook\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Facebook.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Facebook\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Facebook.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Facebook\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Facebook.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Facebook\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Facebook.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Facebook\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Facebook.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Facebook\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Facebook.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Figma\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Figma.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Figma\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Figma.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Figma\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Figma.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Figma\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Figma.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Figma\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Figma.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Figma\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Figma.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Figma\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Figma.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Figma\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Figma.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Figma\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Figma.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Figma\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Figma.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Figma\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Figma.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Cannot access offset ''primary'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Cannot access offset ''verified'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Github\:\:createRepository\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Github\:\:createRepository\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Github\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Github\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Github\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Github\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Github\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Github\:\:getUserSlug\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Github\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Parameter \#4 \$payload of method Appwrite\\Auth\\OAuth2\:\:request\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Github\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Github\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Github\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Github\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Github.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Gitlab\:\:getAppSecret\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Gitlab.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Gitlab\:\:getAppSecret\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Gitlab.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Gitlab\:\:getEndpoint\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Gitlab.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Gitlab\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Gitlab.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Gitlab\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Gitlab.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Gitlab\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Gitlab.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Gitlab\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Gitlab.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Gitlab\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Gitlab.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Gitlab\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Gitlab.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Gitlab\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Gitlab.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Gitlab\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Gitlab.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Gitlab\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Gitlab.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Gitlab\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Gitlab.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Gitlab\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Gitlab.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Google\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Google.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Google\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Google.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Google\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Google.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Google\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Google.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Google\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Google.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Google\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Google.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Google\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Google.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Google\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Google.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Google\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Google.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Google\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Google.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Google\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Google.php - - - - message: '#^Binary operation "\." between mixed and '' '' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Auth/OAuth2/Linkedin.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Auth/OAuth2/Linkedin.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Linkedin\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Linkedin.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Linkedin\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Linkedin.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Linkedin\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Linkedin.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Linkedin\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Linkedin.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Linkedin\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 2 - path: src/Appwrite/Auth/OAuth2/Linkedin.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Linkedin\:\:isEmailVerified\(\) should return bool but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Linkedin.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Linkedin\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Linkedin.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Linkedin\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Linkedin.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Linkedin\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Linkedin.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Linkedin\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Linkedin.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Linkedin\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Linkedin.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Linkedin\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Linkedin.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Microsoft\:\:getAppSecret\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Microsoft.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Microsoft\:\:getAppSecret\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Microsoft.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Microsoft\:\:getClientSecret\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Microsoft.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Microsoft\:\:getTenantID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Microsoft.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Microsoft\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Microsoft.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Microsoft\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Microsoft.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Microsoft\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Microsoft.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Microsoft\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Microsoft.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Microsoft\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Microsoft.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Microsoft\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Microsoft.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Microsoft\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Microsoft.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Microsoft\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Microsoft.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Microsoft\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Microsoft.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Microsoft\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Microsoft.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Microsoft\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Microsoft.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Mock\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Mock.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Mock\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Mock.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Mock\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Mock.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Mock\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Mock.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Mock\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Mock.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Mock\:\:isEmailVerified\(\) should return bool but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Mock.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Mock\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Mock.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Mock\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Mock.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Mock\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Mock.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Mock\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Mock.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Mock\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Mock.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Mock\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Mock.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\MockUnverified\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/MockUnverified.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Mock\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/MockUnverified.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Cannot access offset ''id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Cannot access offset ''owner'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Cannot access offset ''person'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Cannot access offset ''user'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Notion\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Notion\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Notion\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Notion\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Notion\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Notion\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Notion\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Notion\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Notion\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Notion\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Notion\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Notion.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Oidc\:\:getAppSecret\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Oidc\:\:getAppSecret\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Oidc\:\:getAuthorizationEndpoint\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 2 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Oidc\:\:getClientSecret\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Oidc\:\:getTokenEndpoint\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 2 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Oidc\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Oidc\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Oidc\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Oidc\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Oidc\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Oidc\:\:getUserinfoEndpoint\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 2 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Oidc\:\:getWellKnownConfiguration\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Oidc\:\:getWellKnownEndpoint\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Oidc\:\:isEmailVerified\(\) should return bool but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Oidc\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Oidc\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Oidc\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Oidc\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Oidc\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Oidc\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Oidc\:\:\$wellKnownConfiguration \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Oidc\:\:\$wellKnownConfiguration type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Oidc.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Okta\:\:getAppSecret\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Okta\:\:getAppSecret\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Okta\:\:getAuthorizationServerId\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Okta\:\:getClientSecret\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Okta\:\:getOktaDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Okta\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Okta\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Okta\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Okta\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Okta\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Okta\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Okta\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Okta\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Okta\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Okta\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Okta\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Okta.php - - - - message: '#^Binary operation "\." between mixed and ''connect/\?'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Binary operation "\." between mixed and ''identity/oauth2…'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Binary operation "\." between mixed and ''oauth2/token'' results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Cannot access offset ''primary'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Paypal\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Paypal\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Paypal\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Paypal\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Paypal\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Paypal\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Paypal\:\:\$endpoint type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Paypal\:\:\$resourceEndpoint type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Paypal\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Paypal\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Paypal\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Paypal\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Paypal\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Paypal.php - - - - message: '#^Cannot access offset ''mail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Cannot access offset ''verified'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Cannot access offset int\|string\|false on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Podio\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Podio\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Podio\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Podio\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Podio\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Parameter \#1 \$value of function strval expects bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Podio\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Podio\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Podio\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Podio\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Podio\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Podio.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Salesforce\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Salesforce.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Salesforce\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Salesforce.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Salesforce\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Salesforce.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Salesforce\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Salesforce.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Salesforce\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Salesforce.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Salesforce\:\:parseState\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Salesforce.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Salesforce\:\:parseState\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Salesforce.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Salesforce\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Salesforce.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Salesforce\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Salesforce.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Salesforce\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Salesforce.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Salesforce\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Salesforce.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Salesforce\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Salesforce.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Salesforce\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Salesforce.php - - - - message: '#^Cannot access offset ''authed_user'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Auth/OAuth2/Slack.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Slack.php - - - - message: '#^Cannot access offset ''id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Slack.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Slack.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Slack\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Slack.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Slack\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Slack.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Slack\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Slack.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Slack\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Slack.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Slack\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Slack.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Slack\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Slack.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Slack\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Slack.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Slack\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Slack.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Slack\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Slack.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Slack\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Slack.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Slack\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Slack.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Spotify\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Spotify.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Spotify\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Spotify.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Spotify\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Spotify.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Spotify\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Spotify.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Spotify\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Spotify.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Spotify\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Spotify.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Spotify\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Spotify.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Spotify\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Spotify.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Spotify\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Spotify.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Spotify\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Spotify.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Spotify\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Spotify.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Stripe\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Stripe.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Stripe\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Stripe.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Stripe\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Stripe.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Stripe\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Stripe.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Stripe\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Stripe.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Stripe\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Stripe.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Stripe\:\:\$grantType type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Stripe.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Stripe\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Stripe.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Stripe\:\:\$stripeAccountId \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Stripe.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Stripe\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Stripe.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Stripe\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Stripe.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Stripe\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Stripe.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Stripe\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Stripe.php - - - - message: '#^Binary operation "\." between mixed and '' '' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Binary operation "\." between mixed and ''account/info/user'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Binary operation "\." between mixed and ''auth/login\?'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Binary operation "\." between mixed and ''auth/token'' results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Tradeshift\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Tradeshift\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Tradeshift\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Tradeshift\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Tradeshift\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Parameter \#1 \$string of function urlencode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Tradeshift\:\:\$apiDomain type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Tradeshift\:\:\$endpoint type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Tradeshift\:\:\$resourceEndpoint type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Tradeshift\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Tradeshift\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Tradeshift\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Tradeshift\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Tradeshift\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Tradeshift.php - - - - message: '#^Cannot access offset ''0'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Twitch.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Auth/OAuth2/Twitch.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Twitch\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Twitch.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Twitch\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Twitch.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Twitch\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Twitch.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Twitch\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Twitch.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Twitch\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Twitch.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Twitch\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Twitch.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Twitch\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Twitch.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Twitch\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Twitch.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Twitch\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Twitch.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Twitch\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Twitch.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Twitch\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Twitch.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\WordPress\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/WordPress.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\WordPress\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/WordPress.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\WordPress\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/WordPress.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\WordPress\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/WordPress.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\WordPress\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/WordPress.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\WordPress\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/WordPress.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\WordPress\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/WordPress.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\WordPress\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/WordPress.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\WordPress\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/WordPress.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\WordPress\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/WordPress.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\WordPress\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/WordPress.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yahoo\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yahoo.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yahoo\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yahoo.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yahoo\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Yahoo.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yahoo\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Yahoo.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yahoo\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Yahoo.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yahoo\:\:parseState\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yahoo.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yahoo\:\:parseState\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Yahoo.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yahoo\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yahoo.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Yahoo\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yahoo.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Yahoo\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Yahoo.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Yahoo\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yahoo.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Yahoo\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Yahoo.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Yahoo\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yahoo.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yammer\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yammer.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yammer\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yammer.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yammer\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Yammer.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yammer\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Yammer.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yammer\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Yammer.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yammer\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yammer.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Yammer\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Yammer.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Yammer\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yammer.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Yammer\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Yammer.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Yammer\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yammer.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yandex\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yandex.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yandex\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yandex.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yandex\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Yandex.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yandex\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Yandex.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yandex\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Yandex.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yandex\:\:parseState\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yandex.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yandex\:\:parseState\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Yandex.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Yandex\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yandex.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Yandex\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yandex.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Yandex\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Yandex.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Yandex\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yandex.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Yandex\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Yandex.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Yandex\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Yandex.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Zoho\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoho.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Zoho\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoho.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Zoho\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoho.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Zoho\:\:getUserName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoho.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Zoho\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoho.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Auth/OAuth2/Zoho.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Zoho\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoho.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Zoho\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Zoho.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Zoho\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoho.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Zoho\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Zoho.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Zoho\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoho.php - - - - message: '#^Binary operation "\." between mixed and '' '' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoom.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoom.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Zoom\:\:getTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoom.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Zoom\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoom.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Zoom\:\:getUserEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoom.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Zoom\:\:getUserID\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoom.php - - - - message: '#^Method Appwrite\\Auth\\OAuth2\\Zoom\:\:refreshTokens\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoom.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Zoom\:\:\$scopes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoom.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Zoom\:\:\$tokens \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Auth/OAuth2/Zoom.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Zoom\:\:\$tokens type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoom.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Zoom\:\:\$user \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoom.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Zoom\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoom.php - - - - message: '#^Property Appwrite\\Auth\\OAuth2\\Zoom\:\:\$version is never read, only written\.$#' - identifier: property.onlyWritten - count: 1 - path: src/Appwrite/Auth/OAuth2/Zoom.php - - - - message: '#^Method Appwrite\\Auth\\Validator\\MockNumber\:\:getDescription\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Auth/Validator/MockNumber.php - - - - message: '#^Property Appwrite\\Auth\\Validator\\MockNumber\:\:\$message has no type specified\.$#' - identifier: missingType.property - count: 1 - path: src/Appwrite/Auth/Validator/MockNumber.php - - - - message: '#^Method Appwrite\\Auth\\Validator\\PasswordDictionary\:\:__construct\(\) has parameter \$dictionary with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/Validator/PasswordDictionary.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/Validator/PasswordDictionary.php - - - - message: '#^Property Appwrite\\Auth\\Validator\\PasswordDictionary\:\:\$dictionary type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/Validator/PasswordDictionary.php - - - - message: '#^Method Appwrite\\Auth\\Validator\\PasswordHistory\:\:__construct\(\) has parameter \$history with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/Validator/PasswordHistory.php - - - - message: '#^Parameter \#1 \$value of method Utopia\\Auth\\Hash\:\:verify\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/Validator/PasswordHistory.php - - - - message: '#^Parameter \#2 \$hash of method Utopia\\Auth\\Hash\:\:verify\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/Validator/PasswordHistory.php - - - - message: '#^Property Appwrite\\Auth\\Validator\\PasswordHistory\:\:\$history type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Auth/Validator/PasswordHistory.php - - - - message: '#^Offset 0 on non\-empty\-list\ on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Auth/Validator/PersonalData.php - - message: '#^PHPDoc tag @param references unknown parameter\: \$value$#' identifier: parameter.notFound count: 1 path: src/Appwrite/Auth/Validator/PersonalData.php - - - message: '#^Parameter \#1 \$haystack of function strpos expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/Auth/Validator/PersonalData.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Auth/Validator/PersonalData.php - - - - message: '#^Binary operation "\*" between \(float\|int\) and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Bus/Listeners/Usage.php - - - - message: '#^Binary operation "\*" between mixed and 1000 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Bus/Listeners/Usage.php - - - - message: '#^Binary operation "\*" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Bus/Listeners/Usage.php - - - - message: '#^Binary operation "\+" between int and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Bus/Listeners/Usage.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/Bus/Listeners/Usage.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Bus/Listeners/Usage.php - - - - message: '#^Binary operation "\-" between mixed and 2592000 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Certificates/LetsEncrypt.php - - - - message: '#^Parameter \#1 \$certificate of function openssl_x509_parse expects OpenSSLCertificate\|string, string\|false given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Certificates/LetsEncrypt.php - - - - message: '#^Parameter \#1 \$timestamp of method DateTime\:\:setTimestamp\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Certificates/LetsEncrypt.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, list\\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Certificates/LetsEncrypt.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 13 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Binary operation "\+" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Binary operation "\-" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot access offset ''action'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot access offset ''attribute'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot access offset ''document'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot access offset ''exists'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot access offset ''queries'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot call method getAttribute\(\) on bool\|string\|Utopia\\Database\\Document\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot call method getAttributes\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot call method getMethod\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot call method getValues\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot call method setAttribute\(\) on bool\|string\|Utopia\\Database\\Document\.$#' - identifier: method.nonObject - count: 4 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Cannot call method setAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:applyBulkDeleteToState\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:applyBulkDeleteToState\(\) has parameter \$state with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:applyBulkUpdateToState\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:applyBulkUpdateToState\(\) has parameter \$state with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:applyBulkUpsertToState\(\) has parameter \$documents with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:applyBulkUpsertToState\(\) has parameter \$state with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:applyBulkUpsertToState\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:applyProjection\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:countDocuments\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:documentMatchesFilters\(\) has parameter \$filters with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:extractFilters\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:extractFilters\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:getDocument\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:getTransactionState\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:listDocuments\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Method Appwrite\\Databases\\TransactionState\:\:listDocuments\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - message: '#^PHPDoc tag @var above a method has no effect\.$#' identifier: varTag.misplaced count: 1 path: src/Appwrite/Databases/TransactionState.php - - - message: '#^Parameter \#1 \$doc of method Appwrite\\Databases\\TransactionState\:\:applyProjection\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#1 \$doc of method Appwrite\\Databases\\TransactionState\:\:documentMatchesFilters\(\) expects Utopia\\Database\\Document, bool\|string\|Utopia\\Database\\Document given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#1 \$doc of method Appwrite\\Databases\\TransactionState\:\:documentMatchesFilters\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#1 \$haystack of function str_contains expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#1 \$key of method ArrayObject\\:\:offsetExists\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Database\\Document\:\:setAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Database\\Document\:\:getAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#2 \$needle of function str_ends_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#2 \$needle of function str_starts_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#2 \$queries of method Utopia\\Database\\Database\:\:count\(\) expects array\, array given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#2 \$queries of method Utopia\\Database\\Database\:\:find\(\) expects array\, array given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#3 \$queries of method Utopia\\Database\\Database\:\:getDocument\(\) expects array\, array given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Part \$collectionInternalId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Part \$databaseInternalId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: array.invalidKey - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 26 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Unary operation "\-" on mixed results in an error\.$#' - identifier: unaryOp.invalid - count: 1 - path: src/Appwrite/Databases/TransactionState.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:decreaseDocumentAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Deletes/Targets.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Deletes/Targets.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Deletes/Targets.php - - - - message: '#^Part \$topicId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Deletes/Targets.php - - - - message: '#^Method Appwrite\\Detector\\Detector\:\:getClient\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Detector/Detector.php - - - - message: '#^Method Appwrite\\Detector\\Detector\:\:getDetector\(\) should return DeviceDetector\\DeviceDetector but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Detector/Detector.php - - - - message: '#^Method Appwrite\\Detector\\Detector\:\:getDevice\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Detector/Detector.php - - - - message: '#^Method Appwrite\\Detector\\Detector\:\:getOS\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Detector/Detector.php - - message: '#^PHPDoc tag @param has invalid value \(DeviceDetector\)\: Unexpected token "\\n ", expected variable at offset 32 on line 2$#' identifier: phpDoc.parseError @@ -10704,624 +228,24 @@ parameters: count: 1 path: src/Appwrite/Detector/Detector.php - - - message: '#^Parameter \#1 \$haystack of function strpos expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Detector/Detector.php - - - - message: '#^Parameter \#1 \$userAgent of class DeviceDetector\\DeviceDetector constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Detector/Detector.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Detector/Detector.php - - - - message: '#^Property Appwrite\\Detector\\Detector\:\:\$detctor has no type specified\.$#' - identifier: missingType.property - count: 1 - path: src/Appwrite/Detector/Detector.php - - - - message: '#^Property Appwrite\\Detector\\Detector\:\:\$userAgent has no type specified\.$#' - identifier: missingType.property - count: 1 - path: src/Appwrite/Detector/Detector.php - - - - message: '#^Cannot access offset ''services'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Docker/Compose.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Docker/Compose.php - - - - message: '#^Method Appwrite\\Docker\\Compose\:\:getNetworks\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Docker/Compose.php - - - - message: '#^Method Appwrite\\Docker\\Compose\:\:getService\(\) should return Appwrite\\Docker\\Compose\\Service but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Docker/Compose.php - - - - message: '#^Method Appwrite\\Docker\\Compose\:\:getServices\(\) should return array\ but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Docker/Compose.php - - - - message: '#^Method Appwrite\\Docker\\Compose\:\:getVolumes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Docker/Compose.php - - message: '#^PHPDoc tag @var above a method has no effect\.$#' identifier: varTag.misplaced count: 1 path: src/Appwrite/Docker/Compose.php - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Docker/Compose.php - - - - message: '#^Parameter \#1 \$service of class Appwrite\\Docker\\Compose\\Service constructor expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Docker/Compose.php - - - - message: '#^Property Appwrite\\Docker\\Compose\:\:\$compose \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Docker/Compose.php - - - - message: '#^Property Appwrite\\Docker\\Compose\:\:\$compose type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Docker/Compose.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Docker/Compose/Service.php - - - - message: '#^Method Appwrite\\Docker\\Compose\\Service\:\:__construct\(\) has parameter \$service with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Docker/Compose/Service.php - - - - message: '#^Method Appwrite\\Docker\\Compose\\Service\:\:getContainerName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Docker/Compose/Service.php - - - - message: '#^Method Appwrite\\Docker\\Compose\\Service\:\:getEnvironment\(\) should return Appwrite\\Docker\\Env but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Docker/Compose/Service.php - - - - message: '#^Method Appwrite\\Docker\\Compose\\Service\:\:getImage\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Docker/Compose/Service.php - - - - message: '#^Method Appwrite\\Docker\\Compose\\Service\:\:getPorts\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Docker/Compose/Service.php - - - - message: '#^Method Appwrite\\Docker\\Compose\\Service\:\:getPorts\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Docker/Compose/Service.php - - - - message: '#^Offset 0 on non\-empty\-list\ in isset\(\) always exists and is not nullable\.$#' - identifier: isset.offset - count: 1 - path: src/Appwrite/Docker/Compose/Service.php - - message: '#^PHPDoc tag @var above a method has no effect\.$#' identifier: varTag.misplaced count: 1 path: src/Appwrite/Docker/Compose/Service.php - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Docker/Compose/Service.php - - - - message: '#^Property Appwrite\\Docker\\Compose\\Service\:\:\$service type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Docker/Compose/Service.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Docker/Env.php - - - - message: '#^Method Appwrite\\Docker\\Env\:\:getVar\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Docker/Env.php - - - - message: '#^Method Appwrite\\Docker\\Env\:\:list\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Docker/Env.php - - - - message: '#^Offset 0 on non\-empty\-list\ in isset\(\) always exists and is not nullable\.$#' - identifier: isset.offset - count: 1 - path: src/Appwrite/Docker/Env.php - - message: '#^PHPDoc tag @var above a method has no effect\.$#' identifier: varTag.misplaced count: 1 path: src/Appwrite/Docker/Env.php - - - message: '#^Property Appwrite\\Docker\\Env\:\:\$vars type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Docker/Env.php - - - - message: '#^Method Appwrite\\Event\\Audit\:\:preparePayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Audit.php - - - - message: '#^Parameter \#1 \$class of method Appwrite\\Event\\Event\:\:setClass\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Audit.php - - - - message: '#^Parameter \#1 \$queue of method Appwrite\\Event\\Event\:\:setQueue\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Audit.php - - - - message: '#^Method Appwrite\\Event\\Build\:\:preparePayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Build.php - - - - message: '#^Parameter \#1 \$class of method Appwrite\\Event\\Event\:\:setClass\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Build.php - - - - message: '#^Parameter \#1 \$queue of method Appwrite\\Event\\Event\:\:setQueue\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Build.php - - - - message: '#^Method Appwrite\\Event\\Certificate\:\:preparePayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Certificate.php - - - - message: '#^Parameter \#1 \$class of method Appwrite\\Event\\Event\:\:setClass\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Certificate.php - - - - message: '#^Parameter \#1 \$queue of method Appwrite\\Event\\Event\:\:setQueue\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Certificate.php - - - - message: '#^Method Appwrite\\Event\\Database\:\:preparePayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Database.php - - - - message: '#^Parameter \#1 \$class of method Appwrite\\Event\\Event\:\:setClass\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Database.php - - - - message: '#^Parameter \#1 \$dsn of class Utopia\\DSN\\DSN constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Database.php - - - - message: '#^Part \$database \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Event/Database.php - - - - message: '#^Method Appwrite\\Event\\Delete\:\:getResource\(\) should return string but returns string\|null\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Delete.php - - - - message: '#^Method Appwrite\\Event\\Delete\:\:preparePayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Delete.php - - - - message: '#^Parameter \#1 \$class of method Appwrite\\Event\\Event\:\:setClass\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Delete.php - - - - message: '#^Parameter \#1 \$queue of method Appwrite\\Event\\Event\:\:setQueue\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Delete.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:generateEvents\(\) has parameter \$params with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:generateEvents\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:getContext\(\) should return Utopia\\Database\\Document\|null but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:getDatabaseTypeEvents\(\) has parameter \$event with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:getDatabaseTypeEvents\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:getParams\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:getPayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:getPlatform\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:mirrorCollectionEvents\(\) has parameter \$events with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:mirrorCollectionEvents\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:parseEventPattern\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:preparePayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:setPayload\(\) has parameter \$payload with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:setPayload\(\) has parameter \$sensitive with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:setPlatform\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Event\:\:trimPayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Offset 0 on non\-empty\-list\ on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Parameter \#1 \$haystack of function str_contains expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Event/Event.php - - - - message: '#^Parameter \#1 \$string of function trim expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Event/Event.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, list given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Event/Event.php - - - - message: '#^Parameter \#3 \$subject of function str_replace expects array\\|string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Event/Event.php - - - - message: '#^Part \$resource \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Part \$subResource \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Part \$subSubResource \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 2 - path: src/Appwrite/Event/Event.php - - - - message: '#^Property Appwrite\\Event\\Event\:\:\$context type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Property Appwrite\\Event\\Event\:\:\$params type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Property Appwrite\\Event\\Event\:\:\$payload type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Property Appwrite\\Event\\Event\:\:\$platform type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Property Appwrite\\Event\\Event\:\:\$sensitive type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Event.php - - - - message: '#^Method Appwrite\\Event\\Execution\:\:preparePayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Execution.php - - - - message: '#^Method Appwrite\\Event\\Func\:\:preparePayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Func.php - - - - message: '#^Method Appwrite\\Event\\Func\:\:setHeaders\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Func.php - - - - message: '#^Parameter \#1 \$class of method Appwrite\\Event\\Event\:\:setClass\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Func.php - - - - message: '#^Parameter \#1 \$queue of method Appwrite\\Event\\Event\:\:setQueue\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Func.php - - - - message: '#^Property Appwrite\\Event\\Func\:\:\$headers type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Func.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:appendVariables\(\) has parameter \$variables with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:getAttachment\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:getReplyToEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:getReplyToName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:getSenderEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:getSenderName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:getSmtpHost\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:getSmtpPassword\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:getSmtpPort\(\) should return int but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:getSmtpReplyTo\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:getSmtpSecure\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:getSmtpSenderEmail\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:getSmtpSenderName\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:getSmtpUsername\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:getVariables\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:preparePayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Mail\:\:setVariables\(\) has parameter \$variables with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Mail.php - - message: '#^PHPDoc tag @param has invalid value \(int port\)\: Unexpected token "port", expected variable at offset 50 on line 4$#' identifier: phpDoc.parseError @@ -11340,138 +264,12 @@ parameters: count: 1 path: src/Appwrite/Event/Mail.php - - - message: '#^Parameter \#1 \$class of method Appwrite\\Event\\Event\:\:setClass\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Parameter \#1 \$queue of method Appwrite\\Event\\Event\:\:setQueue\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Property Appwrite\\Event\\Mail\:\:\$attachment type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Property Appwrite\\Event\\Mail\:\:\$customMailOptions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Property Appwrite\\Event\\Mail\:\:\$smtp type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Property Appwrite\\Event\\Mail\:\:\$variables type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Mail.php - - - - message: '#^Method Appwrite\\Event\\Message\\Base\:\:fromArray\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Message/Base.php - - - - message: '#^Method Appwrite\\Event\\Message\\Base\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Message/Base.php - - - - message: '#^Method Appwrite\\Event\\Message\\Usage\:\:fromArray\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Message/Usage.php - - message: '#^Method Appwrite\\Event\\Message\\Usage\:\:fromArray\(\) should return static\(Appwrite\\Event\\Message\\Usage\) but returns Appwrite\\Event\\Message\\Usage\.$#' identifier: return.type count: 1 path: src/Appwrite/Event/Message/Usage.php - - - message: '#^Method Appwrite\\Event\\Message\\Usage\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Message/Usage.php - - - - message: '#^Parameter \#1 \$callback of function array_map expects \(callable\(mixed\)\: mixed\)\|null, Closure\(array\)\: Utopia\\Database\\Document given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Message/Usage.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Message/Usage.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Message/Usage.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Message/Usage.php - - - - message: '#^Parameter \$metrics of class Appwrite\\Event\\Message\\Usage constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Message/Usage.php - - - - message: '#^Method Appwrite\\Event\\Messaging\:\:getMessage\(\) should return Utopia\\Database\\Document but returns Utopia\\Database\\Document\|null\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Messaging.php - - - - message: '#^Method Appwrite\\Event\\Messaging\:\:getMessageId\(\) should return string but returns string\|null\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Messaging.php - - - - message: '#^Method Appwrite\\Event\\Messaging\:\:getProviderType\(\) should return string but returns string\|null\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Messaging.php - - - - message: '#^Method Appwrite\\Event\\Messaging\:\:getRecipient\(\) should return array\ but returns array\|null\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Messaging.php - - - - message: '#^Method Appwrite\\Event\\Messaging\:\:getScheduledAt\(\) should return string but returns string\|null\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Event/Messaging.php - - - - message: '#^Method Appwrite\\Event\\Messaging\:\:preparePayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Messaging.php - - message: '#^PHPDoc tag @param references unknown parameter\: \$message$#' identifier: parameter.notFound @@ -11484,426 +282,24 @@ parameters: count: 1 path: src/Appwrite/Event/Messaging.php - - - message: '#^Parameter \#1 \$class of method Appwrite\\Event\\Event\:\:setClass\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Messaging.php - - - - message: '#^Parameter \#1 \$queue of method Appwrite\\Event\\Event\:\:setQueue\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Messaging.php - - - - message: '#^Property Appwrite\\Event\\Messaging\:\:\$recipients type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Messaging.php - - - - message: '#^Method Appwrite\\Event\\Migration\:\:preparePayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Migration.php - - - - message: '#^Parameter \#1 \$class of method Appwrite\\Event\\Event\:\:setClass\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Migration.php - - - - message: '#^Parameter \#1 \$queue of method Appwrite\\Event\\Event\:\:setQueue\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Migration.php - - - - message: '#^Cannot call method getId\(\) on Utopia\\Database\\Document\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Event/Realtime.php - - - - message: '#^Method Appwrite\\Event\\Realtime\:\:getRealtimePayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Realtime.php - - - - message: '#^Method Appwrite\\Event\\Realtime\:\:getSubscribers\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Realtime.php - - - - message: '#^Method Appwrite\\Event\\Realtime\:\:setSubscribers\(\) has parameter \$subscribers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Realtime.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Realtime.php - - - - message: '#^Parameter \$channels of method Appwrite\\Messaging\\Adapter\:\:send\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Realtime.php - - - - message: '#^Parameter \$event of static method Appwrite\\Messaging\\Adapter\\Realtime\:\:fromPayload\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Realtime.php - - - - message: '#^Parameter \$projectId of method Appwrite\\Messaging\\Adapter\:\:send\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Realtime.php - - - - message: '#^Parameter \$roles of method Appwrite\\Messaging\\Adapter\:\:send\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Realtime.php - - - - message: '#^Property Appwrite\\Event\\Realtime\:\:\$subscribers type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Realtime.php - - - - message: '#^Method Appwrite\\Event\\Screenshot\:\:preparePayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Screenshot.php - - - - message: '#^Parameter \#1 \$class of method Appwrite\\Event\\Event\:\:setClass\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Screenshot.php - - - - message: '#^Parameter \#1 \$queue of method Appwrite\\Event\\Event\:\:setQueue\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Screenshot.php - - - - message: '#^Method Appwrite\\Event\\StatsResources\:\:preparePayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/StatsResources.php - - - - message: '#^Parameter \#1 \$class of method Appwrite\\Event\\Event\:\:setClass\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/StatsResources.php - - - - message: '#^Parameter \#1 \$queue of method Appwrite\\Event\\Event\:\:setQueue\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/StatsResources.php - - - - message: '#^Cannot access offset ''\$resource'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Event/Validator/Event.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Event/Validator/Event.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: src/Appwrite/Event/Validator/Event.php - - - - message: '#^Cannot access offset string\|false on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Event/Validator/Event.php - - - - message: '#^Offset 0 on non\-empty\-list\ on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Event/Validator/Event.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/Event/Validator/Event.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Validator/Event.php - - - - message: '#^Strict comparison using \=\=\= between int\<6, 7\> and 8 will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: src/Appwrite/Event/Validator/Event.php - - - - message: '#^Parameter \#1 \$haystack of function str_starts_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Validator/FunctionEvent.php - - - - message: '#^Method Appwrite\\Event\\Webhook\:\:trimPayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Event/Webhook.php - - - - message: '#^Parameter \#1 \$class of method Appwrite\\Event\\Event\:\:setClass\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Webhook.php - - - - message: '#^Parameter \#1 \$queue of method Appwrite\\Event\\Event\:\:setQueue\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Event/Webhook.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Extend/Exception.php - - - - message: '#^Cannot access offset ''description'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Extend/Exception.php - - - - message: '#^Cannot access offset ''publish'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Extend/Exception.php - - - - message: '#^Method Appwrite\\Extend\\Exception\:\:__construct\(\) has parameter \$params with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Extend/Exception.php - - - - message: '#^Method Appwrite\\Extend\\Exception\:\:getCTAs\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Extend/Exception.php - - - - message: '#^Parameter \#1 \$format of function sprintf expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Extend/Exception.php - - - - message: '#^Parameter \#1 \$message of method Exception\:\:__construct\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Extend/Exception.php - - - - message: '#^Parameter \#2 \$code of method Exception\:\:__construct\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Extend/Exception.php - - - - message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Extend/Exception.php - - - - message: '#^Property Appwrite\\Extend\\Exception\:\:\$ctas type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Extend/Exception.php - - - - message: '#^Property Appwrite\\Extend\\Exception\:\:\$errors \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Extend/Exception.php - - - - message: '#^Property Appwrite\\Extend\\Exception\:\:\$errors type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Extend/Exception.php - - - - message: '#^Property Appwrite\\Extend\\Exception\:\:\$publish \(bool\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Extend/Exception.php - - - - message: '#^Property Exception\:\:\$message \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Extend/Exception.php - - - - message: '#^Binary operation "\." between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Filter/BranchDomain.php - - - - message: '#^Cannot access offset ''branch'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Filter/BranchDomain.php - - - - message: '#^Cannot access offset ''projectId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Filter/BranchDomain.php - - - - message: '#^Cannot access offset ''resourceId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Filter/BranchDomain.php - - - - message: '#^Cannot access offset ''sitesDomain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Filter/BranchDomain.php - - - - message: '#^Parameter \#1 \$branch of method Appwrite\\Filter\\BranchDomain\:\:generateBranchPrefix\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Filter/BranchDomain.php - - - - message: '#^Part \$sitesDomain \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Filter/BranchDomain.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Functions/EventProcessor.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Functions/EventProcessor.php - - message: '#^Method Appwrite\\Functions\\EventProcessor\:\:getFunctionsEvents\(\) should return array\ but returns array\\>\.$#' identifier: return.type count: 1 path: src/Appwrite/Functions/EventProcessor.php - - - message: '#^Method Appwrite\\Functions\\EventProcessor\:\:getFunctionsEvents\(\) should return array\ but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Functions/EventProcessor.php - - message: '#^Method Appwrite\\Functions\\EventProcessor\:\:getWebhooksEvents\(\) should return array\ but returns array\\>\.$#' identifier: return.type count: 1 path: src/Appwrite/Functions/EventProcessor.php - - - message: '#^Only iterables can be unpacked, mixed given in argument \#2\.$#' - identifier: argument.unpackNonIterable - count: 2 - path: src/Appwrite/Functions/EventProcessor.php - - - - message: '#^Parameter \#1 \$array of function array_flip expects array\, array\, mixed\> given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Functions/EventProcessor.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Functions/EventProcessor.php - - - - message: '#^Parameter \#2 \$data of method Utopia\\Cache\\Cache\:\:save\(\) expects array\\|string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Functions/EventProcessor.php - - message: '#^Variable \$hostname on left side of \?\? always exists and is not nullable\.$#' identifier: nullCoalesce.variable count: 1 path: src/Appwrite/Functions/EventProcessor.php - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Functions/Validator/Headers.php - - - - message: '#^Method Appwrite\\GraphQL\\Promises\\Adapter\:\:all\(\) has parameter \$promisesOrValues with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Promises/Adapter.php - - - - message: '#^Method Appwrite\\GraphQL\\Promises\\Adapter\\Swoole\:\:all\(\) has parameter \$promisesOrValues with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Promises/Adapter/Swoole.php - - - - message: '#^Parameter \#1 \$promises of static method Appwrite\\Promises\\Swoole\:\:all\(\) expects iterable\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Promises/Adapter/Swoole.php - - - - message: '#^Trying to invoke mixed but it''s not a callable\.$#' - identifier: callable.nonCallable - count: 2 - path: src/Appwrite/GraphQL/Promises/Adapter/Swoole.php - - message: '#^Anonymous function has an unused use \$context\.$#' identifier: closure.unusedUse @@ -11922,144 +318,6 @@ parameters: count: 5 path: src/Appwrite/GraphQL/Resolvers.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Binary operation "\." between ''/\:'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Binary operation "\." between ''\:'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Cannot access offset ''documents'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Cannot call method getMethod\(\) on Utopia\\Http\\Route\|null\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Cannot call method getPath\(\) on Utopia\\Http\\Route\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Cannot call method getResource\(\) on mixed\.$#' - identifier: method.nonObject - count: 10 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Cannot call method setMethod\(\) on mixed\.$#' - identifier: method.nonObject - count: 6 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Cannot call method setPayload\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Cannot call method setQueryString\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Cannot call method setURI\(\) on mixed\.$#' - identifier: method.nonObject - count: 6 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Method Appwrite\\GraphQL\\Resolvers\:\:document\(\) should return callable\(\)\: mixed but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Method Appwrite\\GraphQL\\Resolvers\:\:escapePayload\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Method Appwrite\\GraphQL\\Resolvers\:\:escapePayload\(\) has parameter \$payload with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Parameter \#1 \$route of method Utopia\\Http\\Http\:\:execute\(\) expects Utopia\\Http\\Route, Utopia\\Http\\Route\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Parameter \#1 \$utopia of static method Appwrite\\GraphQL\\Resolvers\:\:resolve\(\) expects Utopia\\Http\\Http, mixed given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Parameter \#2 \$request of static method Appwrite\\GraphQL\\Resolvers\:\:resolve\(\) expects Appwrite\\Utopia\\Request, mixed given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Parameter \#3 \$response of static method Appwrite\\GraphQL\\Resolvers\:\:resolve\(\) expects Appwrite\\Utopia\\Response, mixed given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Parameter \$message of class Appwrite\\GraphQL\\Exception constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Resolvers.php - - - - message: '#^Trying to invoke array\{''Appwrite\\\\GraphQL\\\\Resolvers'', non\-falsy\-string\} but it might not be a callable\.$#' - identifier: callable.nonCallable - count: 1 - path: src/Appwrite/GraphQL/Resolvers.php - - message: '#^Variable \$request in PHPDoc tag @var does not exist\.$#' identifier: varTag.variableNotFound @@ -12072,246 +330,6 @@ parameters: count: 1 path: src/Appwrite/GraphQL/Resolvers.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Call to function is_array\(\) with Appwrite\\SDK\\Method will always evaluate to false\.$#' - identifier: function.impossibleType - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Cannot access offset ''collectionId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Cannot access offset ''databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Cannot call method getModels\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Method Appwrite\\GraphQL\\Schema\:\:api\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Method Appwrite\\GraphQL\\Schema\:\:build\(\) has parameter \$params with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Method Appwrite\\GraphQL\\Schema\:\:build\(\) has parameter \$urls with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Method Appwrite\\GraphQL\\Schema\:\:collections\(\) has parameter \$params with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Method Appwrite\\GraphQL\\Schema\:\:collections\(\) has parameter \$urls with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Method Appwrite\\GraphQL\\Schema\:\:collections\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#1 \$models of static method Appwrite\\GraphQL\\Types\\Mapper\:\:init\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#1 \$type of static method Appwrite\\GraphQL\\Types\\Mapper\:\:attribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#1 \$type of static method GraphQL\\Type\\Definition\\Type\:\:getNullableType\(\) expects GraphQL\\Type\\Definition\\Type, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#1 \.\.\.\$arrays of function array_merge_recursive expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#2 \$array of static method Appwrite\\GraphQL\\Types\\Mapper\:\:attribute\(\) expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#2 \$databaseId of static method Appwrite\\GraphQL\\Resolvers\:\:documentCreate\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#2 \$databaseId of static method Appwrite\\GraphQL\\Resolvers\:\:documentDelete\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#2 \$databaseId of static method Appwrite\\GraphQL\\Resolvers\:\:documentGet\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#2 \$databaseId of static method Appwrite\\GraphQL\\Resolvers\:\:documentList\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#2 \$databaseId of static method Appwrite\\GraphQL\\Resolvers\:\:documentUpdate\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#3 \$required of static method Appwrite\\GraphQL\\Types\\Mapper\:\:attribute\(\) expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#3 \$subject of function str_replace expects array\\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#4 \$url of static method Appwrite\\GraphQL\\Resolvers\:\:documentCreate\(\) expects callable\(\)\: mixed, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#4 \$url of static method Appwrite\\GraphQL\\Resolvers\:\:documentDelete\(\) expects callable\(\)\: mixed, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#4 \$url of static method Appwrite\\GraphQL\\Resolvers\:\:documentGet\(\) expects callable\(\)\: mixed, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#4 \$url of static method Appwrite\\GraphQL\\Resolvers\:\:documentList\(\) expects callable\(\)\: mixed, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#4 \$url of static method Appwrite\\GraphQL\\Resolvers\:\:documentUpdate\(\) expects callable\(\)\: mixed, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#5 \$params of static method Appwrite\\GraphQL\\Resolvers\:\:documentCreate\(\) expects callable\(\)\: mixed, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#5 \$params of static method Appwrite\\GraphQL\\Resolvers\:\:documentList\(\) expects callable\(\)\: mixed, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Parameter \#5 \$params of static method Appwrite\\GraphQL\\Resolvers\:\:documentUpdate\(\) expects callable\(\)\: mixed, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Property Appwrite\\GraphQL\\Schema\:\:\$dirty type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - - - message: '#^Trying to invoke non\-empty\-array\|\(callable\(\)\: mixed\) but it might not be a callable\.$#' - identifier: callable.nonCallable - count: 1 - path: src/Appwrite/GraphQL/Schema.php - - message: '#^Variable \$databaseId might not be defined\.$#' identifier: variable.undefined @@ -12342,168 +360,6 @@ parameters: count: 1 path: src/Appwrite/GraphQL/Types.php - - - message: '#^Access to an undefined property GraphQL\\Language\\AST\\BooleanValueNode\|GraphQL\\Language\\AST\\FloatValueNode\|GraphQL\\Language\\AST\\IntValueNode\|GraphQL\\Language\\AST\\NullValueNode\|GraphQL\\Language\\AST\\StringValueNode\:\:\$value\.$#' - identifier: property.notFound - count: 1 - path: src/Appwrite/GraphQL/Types/Assoc.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Types/Assoc.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Types/Assoc.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/GraphQL/Types/Json.php - - - - message: '#^Cannot access property \$name on mixed\.$#' - identifier: property.nonObject - count: 1 - path: src/Appwrite/GraphQL/Types/Json.php - - - - message: '#^Cannot access property \$value on mixed\.$#' - identifier: property.nonObject - count: 2 - path: src/Appwrite/GraphQL/Types/Json.php - - - - message: '#^Instanceof between GraphQL\\Language\\AST\\NullValueNode and GraphQL\\Language\\AST\\ListValueNode will always evaluate to false\.$#' - identifier: instanceof.alwaysFalse - count: 1 - path: src/Appwrite/GraphQL/Types/Json.php - - - - message: '#^Instanceof between GraphQL\\Language\\AST\\NullValueNode and GraphQL\\Language\\AST\\ObjectValueNode will always evaluate to false\.$#' - identifier: instanceof.alwaysFalse - count: 1 - path: src/Appwrite/GraphQL/Types/Json.php - - - - message: '#^Parameter \#1 \$callback of function array_map expects \(callable\(mixed\)\: mixed\)\|null, array\{\$this\(Appwrite\\GraphQL\\Types\\Json\), ''parseLiteral''\} given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Types/Json.php - - - - message: '#^Parameter \#1 \$valueNode of method Appwrite\\GraphQL\\Types\\Json\:\:parseLiteral\(\) expects GraphQL\\Language\\AST\\BooleanValueNode\|GraphQL\\Language\\AST\\FloatValueNode\|GraphQL\\Language\\AST\\IntValueNode\|GraphQL\\Language\\AST\\NullValueNode\|GraphQL\\Language\\AST\\StringValueNode, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Types/Json.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Types/Json.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/GraphQL/Types/Json.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Call to function is_array\(\) with array\ will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Cannot access constant class on mixed\.$#' - identifier: classConstant.nonObject - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Cannot access offset ''description'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Cannot access offset ''injections'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Cannot access offset ''optional'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Cannot access offset ''validator'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Cannot call method getRules\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Cannot call method getType\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Cannot call method getValidator\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Cannot call method isAny\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/GraphQL/Types/Mapper.php - - message: '#^Class Appwrite\\Network\\Validator\\CNAME not found\.$#' identifier: class.notFound @@ -12516,156 +372,6 @@ parameters: count: 1 path: src/Appwrite/GraphQL/Types/Mapper.php - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Method Appwrite\\GraphQL\\Types\\Mapper\:\:args\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Method Appwrite\\GraphQL\\Types\\Mapper\:\:args\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Method Appwrite\\GraphQL\\Types\\Mapper\:\:getColumnImplementation\(\) has parameter \$object with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Method Appwrite\\GraphQL\\Types\\Mapper\:\:getHashOptionsImplementation\(\) has parameter \$object with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Method Appwrite\\GraphQL\\Types\\Mapper\:\:getObjectType\(\) has parameter \$rule with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Method Appwrite\\GraphQL\\Types\\Mapper\:\:getUnionImplementation\(\) has parameter \$object with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Method Appwrite\\GraphQL\\Types\\Mapper\:\:getUnionType\(\) has parameter \$rule with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Method Appwrite\\GraphQL\\Types\\Mapper\:\:init\(\) has parameter \$models with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Method Appwrite\\GraphQL\\Types\\Mapper\:\:param\(\) has parameter \$injections with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Method Appwrite\\GraphQL\\Types\\Mapper\:\:route\(\) return type has no value type specified in iterable type iterable\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Parameter \#1 \$rule of static method Appwrite\\GraphQL\\Types\\Mapper\:\:getObjectType\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Parameter \#1 \$string of function ucfirst expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Parameter \#1 \$type of static method Appwrite\\GraphQL\\Types\\Registry\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Parameter \#1 \$type of static method Appwrite\\GraphQL\\Types\\Registry\:\:has\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Parameter \#2 \$needle of function str_starts_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Parameter \#2 \$object of static method Appwrite\\GraphQL\\Types\\Mapper\:\:getUnionImplementation\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Parameter \#2 \$rule of static method Appwrite\\GraphQL\\Types\\Mapper\:\:getUnionType\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Parameter \#2 \$validator of static method Appwrite\\GraphQL\\Types\\Mapper\:\:param\(\) expects \(callable\(\)\: mixed\)\|Utopia\\Validator, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Parameter \#3 \$subject of function str_replace expects array\\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Parameter \#4 \$injections of static method Appwrite\\GraphQL\\Types\\Mapper\:\:param\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 3 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Property Appwrite\\GraphQL\\Types\\Mapper\:\:\$args type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Property Appwrite\\GraphQL\\Types\\Mapper\:\:\$blacklist type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - - - message: '#^Property Appwrite\\GraphQL\\Types\\Mapper\:\:\$models type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Types/Mapper.php - - message: '#^Unsafe access to private property Appwrite\\GraphQL\\Types\\Mapper\:\:\$models through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -12690,2340 +396,72 @@ parameters: count: 1 path: src/Appwrite/GraphQL/Types/Mapper.php - - - message: '#^Method Appwrite\\GraphQL\\Types\\Registry\:\:get\(\) should return GraphQL\\Type\\Definition\\Type but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/GraphQL/Types/Registry.php - - - - message: '#^Property Appwrite\\GraphQL\\Types\\Registry\:\:\$register type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/GraphQL/Types/Registry.php - - - - message: '#^Method Appwrite\\Hooks\\Hooks\:\:add\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Hooks/Hooks.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\:\:send\(\) has parameter \$channels with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\:\:send\(\) has parameter \$events with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\:\:send\(\) has parameter \$options with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\:\:send\(\) has parameter \$payload with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\:\:send\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\:\:subscribe\(\) has parameter \$channels with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\:\:subscribe\(\) has parameter \$queryGroup with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\:\:subscribe\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 9 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Binary operation "\." between ''buckets\.'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Binary operation "\." between ''functions\.'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot access offset ''channels'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot access offset ''compiled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot access offset ''payload'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot access offset ''projectId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot access offset ''roles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot access offset ''strings'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot call method get\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot call method getAttribute\(\) on Utopia\\Database\\Document\|null\.$#' - identifier: method.nonObject - count: 7 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot call method getId\(\) on Utopia\\Database\\Document\|null\.$#' - identifier: method.nonObject - count: 8 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot call method getMethod\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot call method getRead\(\) on Utopia\\Database\\Document\|null\.$#' - identifier: method.nonObject - count: 4 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot call method getValues\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot call method isEmpty\(\) on Utopia\\Database\\Document\|null\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Cannot call method toString\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Match arm comparison between ''string'' and ''array'' is always false\.$#' - identifier: match.alwaysFalse - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Match arm comparison between ''string'' and ''string'' is always true\.$#' - identifier: match.alwaysTrue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:constructSubscriptions\(\) has parameter \$channelNames with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:constructSubscriptions\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:convertChannels\(\) has parameter \$channels with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:convertChannels\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:convertQueries\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:convertQueries\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:fromPayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:getDatabaseChannels\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:getSubscribers\(\) has parameter \$event with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:getSubscribers\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:getSubscriptionMetadata\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:send\(\) has parameter \$channels with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:send\(\) has parameter \$events with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:send\(\) has parameter \$options with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:send\(\) has parameter \$payload with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:send\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:subscribe\(\) has parameter \$channels with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:subscribe\(\) has parameter \$queryGroup with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Method Appwrite\\Messaging\\Adapter\\Realtime\:\:subscribe\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Only iterables can be unpacked, mixed given in argument \#2\.$#' - identifier: argument.unpackNonIterable - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Parameter \#1 \$array of function array_flip expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Parameter \#1 \$compiled of static method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:filter\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:team\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Parameter \#1 \$pool of class Appwrite\\PubSub\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Parameter \#1 \$queries of static method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:compile\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Parameter \#1 \$query of static method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:validateSelectQuery\(\) expects Utopia\\Database\\Query, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Parameter \#2 \$payload of static method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:filter\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Parameter \#3 \$resourceId of static method Appwrite\\Messaging\\Adapter\\Realtime\:\:getDatabaseChannels\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Parameter \#3 \$subject of function str_replace expects array\\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Part \$method \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 30 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Property Appwrite\\Messaging\\Adapter\\Realtime\:\:\$connections type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Property Appwrite\\Messaging\\Adapter\\Realtime\:\:\$subscriptions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Messaging/Adapter/Realtime.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Binary operation "\." between ''Migrating documents…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''\$collection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''_metadata'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''attributes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''audit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''filters'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''format'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''formatOptions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''lengths'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''orders'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''signed'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot access offset int\<0, max\> on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Cannot call method getArrayCopy\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Method Appwrite\\Migration\\Migration\:\:createAttributesFromCollection\(\) has parameter \$attributeIds with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:foreach\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \$array of method Utopia\\Database\\Database\:\:createAttribute\(\) expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \$attributes of method Utopia\\Database\\Database\:\:createAttributes\(\) expects array\\>, list\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \$attributes of method Utopia\\Database\\Database\:\:createIndex\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \$filters of method Utopia\\Database\\Database\:\:createAttribute\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \$format of method Utopia\\Database\\Database\:\:createAttribute\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \$formatOptions of method Utopia\\Database\\Database\:\:createAttribute\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \$lengths of method Utopia\\Database\\Database\:\:createIndex\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \$orders of method Utopia\\Database\\Database\:\:createIndex\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \$required of method Utopia\\Database\\Database\:\:createAttribute\(\) expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \$signed of method Utopia\\Database\\Database\:\:createAttribute\(\) expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \$size of method Utopia\\Database\\Database\:\:createAttribute\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \$type of method Utopia\\Database\\Database\:\:createAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Parameter \$type of method Utopia\\Database\\Database\:\:createIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Part \$attributeId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Part \$collection\[''\$id''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Property Appwrite\\Migration\\Migration\:\:\$collections \(array\\>\) does not accept array\\.$#' - identifier: assign.propertyType - count: 2 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Property Appwrite\\Migration\\Migration\:\:\$collections \(array\\>\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Property Appwrite\\Migration\\Migration\:\:\$getProjectDB \(callable\(Utopia\\Database\\Document\)\: Utopia\\Database\\Database\) does not accept \(callable\(\)\: mixed\)\|null\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Migration/Migration.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 8 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Binary operation "\." between ''Migrating Project\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - message: '#^Call to an undefined method Appwrite\\Migration\\Version\\V15\:\:documentsIterator\(\)\.$#' identifier: method.notFound count: 7 path: src/Appwrite/Migration/Version/V15.php - - - message: '#^Cannot access offset ''_permission'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Cannot access offset ''_type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Cannot call method get\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 5 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Cannot call method getAttributes\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Cannot call method getSequence\(\) on mixed\.$#' - identifier: method.nonObject - count: 4 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Cannot call method setAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 4 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Cannot cast mixed to string\.$#' - identifier: cast.string - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Method Appwrite\\Migration\\Version\\V15\:\:encryptFilter\(\) should return string but returns string\|false\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - message: '#^Method Appwrite\\Migration\\Version\\V15\:\:fixDocument\(\) should return Utopia\\Database\\Document but empty return statement found\.$#' identifier: return.empty count: 1 path: src/Appwrite/Migration/Version/V15.php - - - message: '#^Method Appwrite\\Migration\\Version\\V15\:\:getSQLColumnTypes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - message: '#^PHPDoc tag @return with type string\|false is not subtype of native type string\.$#' identifier: return.phpDocType count: 1 path: src/Appwrite/Migration/Version/V15.php - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#1 \$array of function array_reduce expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#1 \$callback of function array_map expects \(callable\(mixed\)\: mixed\)\|null, Closure\(string\)\: string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:deleteAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:deleteIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:renameAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:updateAttributeFilters\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#1 \$collectionId of method Utopia\\Database\\Database\:\:purgeCachedCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#1 \$permission of method Appwrite\\Migration\\Version\\V15\:\:migratePermission\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#1 \$string of function bin2hex expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#1 \$table of method Appwrite\\Migration\\Version\\V15\:\:createPermissionsColumn\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 24 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#1 \$table of method Appwrite\\Migration\\Version\\V15\:\:migrateDateTimeAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 68 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#1 \$table of method Appwrite\\Migration\\Version\\V15\:\:removeWritePermissions\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#1 \$value of method Appwrite\\Migration\\Version\\V15\:\:encryptFilter\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#2 \$callback of function array_reduce expects callable\(array, mixed\)\: array, Closure\(array, array\)\: non\-empty\-array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createAttributeFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 9 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createIndexFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 39 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Parameter \#5 \$iv of static method Appwrite\\OpenSSL\\OpenSSL\:\:encrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Part \$bucket\-\>getAttribute\(''name''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Part \$bucket\-\>getSequence\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Part \$collection\-\>getAttribute\(''name''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Part \$collection\-\>getSequence\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Part \$database\-\>getAttribute\(''name''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Part \$database\-\>getSequence\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Part \$document\-\>getId\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Part \$id \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 54 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Part \$type \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: array.invalidKey - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - - - message: '#^Property Appwrite\\Migration\\Migration\:\:\$pdo \(Utopia\\Database\\PDO\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Migration/Version/V15.php - - message: '#^Variable \$tag on left side of \?\? always exists and is always null\.$#' identifier: nullCoalesce.variable count: 1 path: src/Appwrite/Migration/Version/V15.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Migration/Version/V16.php - - - - message: '#^Binary operation "\." between ''Migrating Project\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V16.php - - - - message: '#^Binary operation "\." between mixed and ''Appid'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V16.php - - - - message: '#^Binary operation "\." between mixed and ''Enabled'' results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Migration/Version/V16.php - - - - message: '#^Binary operation "\." between mixed and ''Secret'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V16.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V16.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Migration/Version/V16.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:deleteAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V16.php - - - - message: '#^Parameter \#1 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V16.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V16.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createAttributeFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Version/V16.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createIndexFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V16.php - - - - message: '#^Part \$id \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 5 - path: src/Appwrite/Migration/Version/V16.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Migration/Version/V17.php - - - - message: '#^Binary operation "\." between ''Migrating Project\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V17.php - - message: '#^Call to an undefined method Appwrite\\Migration\\Version\\V17\:\:documentsIterator\(\)\.$#' identifier: method.notFound count: 1 path: src/Appwrite/Migration/Version/V17.php - - - message: '#^Cannot call method getSequence\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Migration/Version/V17.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:deleteAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Migration/Version/V17.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:renameAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V17.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:updateAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V17.php - - - - message: '#^Parameter \#1 \$collectionId of method Utopia\\Database\\Database\:\:purgeCachedCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 15 - path: src/Appwrite/Migration/Version/V17.php - - - - message: '#^Parameter \#1 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Version/V17.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createAttributeFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 10 - path: src/Appwrite/Migration/Version/V17.php - - - - message: '#^Part \$bucket\-\>getSequence\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V17.php - - - - message: '#^Part \$id \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 16 - path: src/Appwrite/Migration/Version/V17.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 4 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Binary operation "\." between ''Migrating Project\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - message: '#^Call to an undefined method Appwrite\\Migration\\Version\\V18\:\:documentsIterator\(\)\.$#' identifier: method.notFound count: 2 path: src/Appwrite/Migration/Version/V18.php - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Cannot access offset ''attributes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Cannot access offset ''mode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Cannot call method getPermissions\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Cannot call method getSequence\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Parameter \#1 \$collection of method Appwrite\\Migration\\Migration\:\:changeAttributeInternalType\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:deleteAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Parameter \#1 \$collectionId of method Utopia\\Database\\Database\:\:purgeCachedCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Parameter \#1 \$id of method Utopia\\Database\\Database\:\:updateCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Parameter \#2 \$attribute of method Appwrite\\Migration\\Migration\:\:changeAttributeInternalType\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createAttributeFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Parameter \#2 \$permissions of method Utopia\\Database\\Database\:\:updateCollection\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Parameter \#2 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Parameter \#3 \$documentSecurity of method Utopia\\Database\\Database\:\:updateCollection\(\) expects bool, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Part \$collection\-\>getSequence\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Part \$database\-\>getAttribute\(''name''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Part \$database\-\>getId\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Part \$database\-\>getSequence\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Part \$id \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 5 - path: src/Appwrite/Migration/Version/V18.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 4 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Binary operation "\." between ''Migrating Project\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Binary operation "\." between ''Migrating…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Binary operation "\." between ''database_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Binary operation "\." between ''deno cache '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Binary operation "\." between mixed and "\\n"\|"\\r\\n" results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Migration/Version/V19.php - - message: '#^Call to an undefined method Appwrite\\Migration\\Version\\V19\:\:documentsIterator\(\)\.$#' identifier: method.notFound count: 4 path: src/Appwrite/Migration/Version/V19.php - - - message: '#^Cannot access offset ''\$collection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Cannot call method getArrayCopy\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 13 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Cannot call method getSequence\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Cannot call method setAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:deleteAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:deleteIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 7 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:renameAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 7 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:updateAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 8 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Parameter \#1 \$collectionId of method Utopia\\Database\\Database\:\:purgeCachedCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 16 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createAttributeFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 10 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createIndexFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 7 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:updateAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:updateDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Parameter \#3 \$document of method Utopia\\Database\\Database\:\:updateDocument\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Part \$bucket\-\>getAttribute\(''name''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Part \$bucket\-\>getId\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Part \$bucket\-\>getSequence\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Part \$domain\-\>getAttribute\(''domain''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Part \$id \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 41 - path: src/Appwrite/Migration/Version/V19.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 8 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Binary operation "\-" between float\|int and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Binary operation "\." between ''Migrating Project\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - message: '#^Call to an undefined method Appwrite\\Migration\\Version\\V20\:\:documentsIterator\(\)\.$#' identifier: method.notFound count: 6 path: src/Appwrite/Migration/Version/V20.php - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Cannot access offset ''attributes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Cannot access offset ''collectionInternalId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Cannot access offset ''databaseInternalId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 7 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 9 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Cannot call method getSequence\(\) on mixed\.$#' - identifier: method.nonObject - count: 7 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:deleteAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:deleteIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:renameAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:updateAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:updateAttributeDefault\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#1 \$collectionId of method Utopia\\Database\\Database\:\:purgeCachedCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 7 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#1 \$datetime of function strtotime expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createAttributeFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 14 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createIndexFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:deleteDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:deleteIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:updateAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#2 \$seconds of static method Utopia\\Database\\DateTime\:\:addSeconds\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#2 \$value of method Appwrite\\Migration\\Version\\V20\:\:createInfMetric\(\) expects int, float\|int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \#3 \$type of method Utopia\\Database\\Database\:\:updateAttribute\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Parameter \$collection of method Utopia\\Database\\Database\:\:updateAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$attribute\[''\$id''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$attribute\[''collectionInternalId''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$attribute\[''databaseInternalId''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$bucket\-\>getAttribute\(''name''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$bucket\-\>getId\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$bucket\-\>getSequence\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$bucketId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$bucketInternalId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$collection\-\>getAttribute\(''name''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$collection\-\>getId\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$collection\-\>getSequence\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$collectionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$collectionInternalId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$database\-\>getAttribute\(''name''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$database\-\>getId\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$database\-\>getSequence\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$databaseId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 3 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$databaseInternalId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 3 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$function\-\>getAttribute\(''name''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$function\-\>getId\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$functionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 5 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$functionInternalId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 5 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$id \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 31 - path: src/Appwrite/Migration/Version/V20.php - - - - message: '#^Part \$stat\[''period''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V20.php - - message: '#^Variable \$query on left side of \?\? always exists and is not nullable\.$#' identifier: nullCoalesce.variable count: 1 path: src/Appwrite/Migration/Version/V20.php - - - message: '#^Binary operation "\." between ''Migrating Project\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V21.php - - - - message: '#^Binary operation "\." between ''bucket_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V21.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V21.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:updateAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V21.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createAttributeFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 11 - path: src/Appwrite/Migration/Version/V21.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createIndexFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Migration/Version/V21.php - - - - message: '#^Part \$bucket\-\>getAttribute\(''name''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V21.php - - - - message: '#^Part \$id \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 17 - path: src/Appwrite/Migration/Version/V21.php - - - - message: '#^Binary operation "\+" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Migration/Version/V22.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Migration/Version/V22.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:deleteAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Migration/Version/V22.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:deleteIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Migration/Version/V22.php - - - - message: '#^Parameter \#1 \$collectionId of method Utopia\\Database\\Database\:\:purgeCachedCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 13 - path: src/Appwrite/Migration/Version/V22.php - - - - message: '#^Parameter \#1 \$haystack of function str_ends_with expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Migration/Version/V22.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createAttributesFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 8 - path: src/Appwrite/Migration/Version/V22.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createIndexFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Migration/Version/V22.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Migration/Version/V22.php - - - - message: '#^Part \$deploymentId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V22.php - - - - message: '#^Part \$document\-\>getAttribute\(''projectId''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V22.php - - - - message: '#^Part \$id \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 24 - path: src/Appwrite/Migration/Version/V22.php - - - - message: '#^Part \$latestDeployment\-\>getAttribute\(''buildId''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V22.php - - - - message: '#^Part \$resourceId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V22.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Cannot access offset ''attributes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Cannot access offset ''migrations'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Cannot access offset ''projects'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Cannot access offset int\<0, max\> on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 2 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Parameter \#1 \$callback of function array_map expects \(callable\(mixed\)\: mixed\)\|null, Closure\(Utopia\\Database\\Document\)\: array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Parameter \#1 \$collection of method Utopia\\Database\\Database\:\:updateAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Parameter \#1 \$collectionId of method Utopia\\Database\\Database\:\:purgeCachedCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createAttributeFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Migration\\Migration\:\:createAttributesFromCollection\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:purgeCachedDocument\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Part \$bucket\-\>getAttribute\(''name''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Part \$collection\-\>getAttribute\(''name''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Part \$database\-\>getAttribute\(''name''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Migration/Version/V23.php - - - - message: '#^Part \$id \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 7 - path: src/Appwrite/Migration/Version/V23.php - - message: '#^Method Appwrite\\Network\\Cors\:\:headers\(\) should return array\ but returns array\\.$#' identifier: return.type count: 5 path: src/Appwrite/Network/Cors.php - - - message: '#^Cannot access offset ''hostname'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Network/Platform.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Network/Platform.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Network/Platform.php - - - - message: '#^Method Appwrite\\Network\\Platform\:\:getHostnames\(\) has parameter \$platforms with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Network/Platform.php - - - - message: '#^Method Appwrite\\Network\\Platform\:\:getHostnames\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Network/Platform.php - - - - message: '#^Method Appwrite\\Network\\Platform\:\:getSchemes\(\) has parameter \$platforms with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Network/Platform.php - - - - message: '#^Method Appwrite\\Network\\Platform\:\:getSchemes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Network/Platform.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Network/Platform.php - - - - message: '#^Parameter \#3 \$dnsServer of class Utopia\\DNS\\Validator\\DNS constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Network/Validator/DNS.php - - - - message: '#^Property Appwrite\\Network\\Validator\\DNS\:\:\$dnsServers type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Network/Validator/DNS.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Network/Validator/Email.php - - - - message: '#^Method Appwrite\\Network\\Validator\\Origin\:\:getAllowedHostnames\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Network/Validator/Origin.php - - - - message: '#^Method Appwrite\\Network\\Validator\\Origin\:\:getAllowedSchemes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Network/Validator/Origin.php - - - - message: '#^Method Appwrite\\Network\\Validator\\Origin\:\:setAllowedHostnames\(\) has parameter \$allowedHostnames with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Network/Validator/Origin.php - - - - message: '#^Method Appwrite\\Network\\Validator\\Origin\:\:setAllowedSchemes\(\) has parameter \$allowedSchemes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Network/Validator/Origin.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Network/Validator/Origin.php - - - - message: '#^Property Appwrite\\Network\\Validator\\Origin\:\:\$allowedHostnames \(array\\) does not accept array\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Network/Validator/Origin.php - - - - message: '#^Property Appwrite\\Network\\Validator\\Origin\:\:\$allowedSchemes \(array\\) does not accept array\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Network/Validator/Origin.php - - - - message: '#^Method Appwrite\\OpenSSL\\OpenSSL\:\:cipherIVLength\(\) should return int but returns int\|false\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) has parameter \$data with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) has parameter \$method with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) has parameter \$password with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) should return string but returns string\|false\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Method Appwrite\\OpenSSL\\OpenSSL\:\:encrypt\(\) has parameter \$data with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Method Appwrite\\OpenSSL\\OpenSSL\:\:encrypt\(\) has parameter \$key with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Method Appwrite\\OpenSSL\\OpenSSL\:\:encrypt\(\) has parameter \$method with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Method Appwrite\\OpenSSL\\OpenSSL\:\:encrypt\(\) should return string but returns string\|false\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Method Appwrite\\OpenSSL\\OpenSSL\:\:randomPseudoBytes\(\) has parameter \$length with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Parameter \#1 \$data of function openssl_decrypt expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Parameter \#1 \$data of function openssl_encrypt expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Parameter \#1 \$length of function openssl_random_pseudo_bytes expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Parameter \#2 \$cipher_algo of function openssl_decrypt expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Parameter \#2 \$cipher_algo of function openssl_encrypt expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Parameter \#3 \$passphrase of function openssl_decrypt expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Parameter \#3 \$passphrase of function openssl_encrypt expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - - - message: '#^Parameter &\$crypto_strong by\-ref type of method Appwrite\\OpenSSL\\OpenSSL\:\:randomPseudoBytes\(\) expects null, mixed given\.$#' - identifier: parameterByRef.type - count: 1 - path: src/Appwrite/OpenSSL/OpenSSL.php - - message: '#^Parameter &\$tag by\-ref type of method Appwrite\\OpenSSL\\OpenSSL\:\:encrypt\(\) expects null, string\|null given\.$#' identifier: parameterByRef.type count: 1 path: src/Appwrite/OpenSSL/OpenSSL.php - - - message: '#^Method Appwrite\\Platform\\Action\:\:disableSubqueries\(\) has parameter \$filters with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Action.php - - - - message: '#^Method Appwrite\\Platform\\Action\:\:foreachDocument\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Action.php - - message: '#^PHPDoc tag @param references unknown parameter\: \$projectId$#' identifier: parameter.notFound @@ -15031,452 +469,8 @@ parameters: path: src/Appwrite/Platform/Action.php - - message: '#^Parameter \#1 \$name of static method Utopia\\Database\\Database\:\:addFilter\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Action.php - - - - message: '#^Parameter \#2 \$queries of method Utopia\\Database\\Database\:\:find\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Action.php - - - - message: '#^Property Appwrite\\Platform\\Action\:\:\$filters type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Action.php - - - - message: '#^Property Appwrite\\Platform\\Action\:\:\$removableAttributes type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Action.php - - - - message: '#^Parameter \#1 \$issuer of method Appwrite\\Auth\\MFA\\Type\:\:setIssuer\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Authenticators/Create.php - - - - message: '#^Parameter \#1 \$label of method Appwrite\\Auth\\MFA\\Type\:\:setLabel\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Authenticators/Create.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Authenticators/Update.php - - - - message: '#^Parameter \#1 \$array of function array_unique expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Authenticators/Update.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Cannot access offset ''host'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Cannot access offset ''password'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Cannot access offset ''port'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Cannot access offset ''replyTo'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Cannot access offset ''secure'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Cannot access offset ''senderEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Cannot access offset ''senderName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Cannot access offset ''subject'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Cannot access offset ''username'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Cannot call method render\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Cannot call method setParam\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Account\\Http\\Account\\MFA\\Challenges\\Create\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Account\\Http\\Account\\MFA\\Challenges\\Create\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$body of method Appwrite\\Event\\Mail\:\:setBody\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$content of static method Appwrite\\Template\\Template\:\:fromString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$host of method Appwrite\\Event\\Mail\:\:setSmtpHost\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$name of method Appwrite\\Event\\Mail\:\:setSenderName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$numberToParse of method libphonenumber\\PhoneNumberUtil\:\:parse\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$password of method Appwrite\\Event\\Mail\:\:setSmtpPassword\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$port of method Appwrite\\Event\\Mail\:\:setSmtpPort\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$preview of method Appwrite\\Event\\Mail\:\:setPreview\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$recipient of method Appwrite\\Event\\Mail\:\:setRecipient\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$recipients of method Appwrite\\Event\\Messaging\:\:setRecipients\(\) expects array\, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$replyTo of method Appwrite\\Event\\Mail\:\:setSmtpReplyTo\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$secure of method Appwrite\\Event\\Mail\:\:setSmtpSecure\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$senderEmail of method Appwrite\\Event\\Mail\:\:setSmtpSenderEmail\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$senderName of method Appwrite\\Event\\Mail\:\:setSmtpSenderName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$subject of method Appwrite\\Event\\Mail\:\:setSubject\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#1 \$username of method Appwrite\\Event\\Mail\:\:setSmtpUsername\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, int\\|int\<1, max\> given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Create.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Update.php - - - - message: '#^Parameter \#1 \$array of function array_diff expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Update.php - - - - message: '#^Parameter \#1 \$array of function array_unique expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Update.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Challenges/Update.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Update.php - - - - message: '#^Parameter \#1 \$array of function array_unique expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Account/Http/Account/MFA/Update.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Binary operation "\." between ''File not readable…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Binary operation "\." between mixed and ''Appid'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Binary operation "\." between mixed and ''Secret'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Call to an undefined method object\:\:getAccessToken\(\)\.$#' - identifier: method.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Call to an undefined method object\:\:getAccessTokenExpiry\(\)\.$#' - identifier: method.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Call to an undefined method object\:\:getRefreshToken\(\)\.$#' - identifier: method.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Call to an undefined method object\:\:getUserID\(\)\.$#' - identifier: method.notFound - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Call to an undefined method object\:\:getUserSlug\(\)\.$#' - identifier: method.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Call to an undefined method object\:\:refreshTokens\(\)\.$#' - identifier: method.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Cannot access offset ''class'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Cannot access offset ''path'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 8 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Cannot call method setAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Action\:\:getUserGitHub\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Parameter \#1 \$body of method Appwrite\\Utopia\\Response\:\:file\(\) expects string, string\|false\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Parameter \#1 \$class of function class_exists expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Parameter \#1 \$data of class Utopia\\Image\\Image constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Parameter \#1 \$filename of function is_readable expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:updateDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Parameter \#3 \$document of method Utopia\\Database\\Database\:\:updateDocument\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type + message: '#^Variable \$output in empty\(\) always exists and is not falsy\.$#' + identifier: empty.variable count: 1 path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php @@ -15484,494 +478,8 @@ parameters: message: '#^Variable \$output in empty\(\) always exists and is not falsy\.$#' identifier: empty.variable count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Browsers\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Browsers/Get.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Browsers/Get.php - - - - message: '#^Binary operation "%%" between string\|null and 100 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Back/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Cards\\Cloud\\Back\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Back/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Cards\\Cloud\\Back\\Get\:\:action\(\) has parameter \$contributors with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Back/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Cards\\Cloud\\Back\\Get\:\:action\(\) has parameter \$employees with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Back/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Cards\\Cloud\\Back\\Get\:\:action\(\) has parameter \$heroes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Back/Get.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Back/Get.php - - - - message: '#^Binary operation "%%" between string\|null and 100 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Cannot access offset ''gitHub'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Cannot access offset ''memberSince'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Cannot access offset ''spot'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Cards\\Cloud\\Front\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Cards\\Cloud\\Front\\Get\:\:action\(\) has parameter \$contributors with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Cards\\Cloud\\Front\\Get\:\:action\(\) has parameter \$employees with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Cards\\Cloud\\Front\\Get\:\:action\(\) has parameter \$heroes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Parameter \#1 \$string of function substr expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Parameter \#2 \$text of method Imagick\:\:queryFontMetrics\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Parameter \#3 \$x of method Imagick\:\:compositeImage\(\) expects int, float given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Parameter \#4 \$y of method Imagick\:\:compositeImage\(\) expects int, float given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Parameter \#5 \$text of method Imagick\:\:annotateImage\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Ternary operator condition is always true\.$#' - identifier: ternary.alwaysTrue - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/Front/Get.php - - - - message: '#^Binary operation "%%" between string\|null and 100 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Binary operation "%%" between string\|null and 3 results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Cannot access offset ''gitHub'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Cannot access offset ''memberSince'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Cannot access offset ''spot'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Cards\\Cloud\\OG\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Cards\\Cloud\\OG\\Get\:\:action\(\) has parameter \$contributors with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Cards\\Cloud\\OG\\Get\:\:action\(\) has parameter \$employees with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Cards\\Cloud\\OG\\Get\:\:action\(\) has parameter \$heroes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#1 \$cols of method Imagick\:\:newImage\(\) expects int, float given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 10 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#1 \$string of function substr expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#2 \$rows of method Imagick\:\:newImage\(\) expects int, float given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#2 \$text of method Imagick\:\:queryFontMetrics\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#3 \$text of method ImagickDraw\:\:annotation\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#3 \$x of method Imagick\:\:compositeImage\(\) expects int, float given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#3 \$x of method Imagick\:\:compositeImage\(\) expects int, float\|int\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#3 \$x of method Imagick\:\:compositeImage\(\) expects int, float\|int\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#3 \$x of method Imagick\:\:compositeImage\(\) expects int, float\|int\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#4 \$y of method Imagick\:\:compositeImage\(\) expects int, float given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Parameter \#5 \$text of method Imagick\:\:annotateImage\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Ternary operator condition is always true\.$#' - identifier: ternary.alwaysTrue - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Cards/Cloud/OG/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\CreditCards\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/CreditCards/Get.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/CreditCards/Get.php - - - - message: '#^Cannot access offset ''host'' on array\{scheme\?\: string, host\?\: string, port\?\: int\<0, 65535\>, user\?\: string, pass\?\: string, path\?\: string, query\?\: string, fragment\?\: string\}\|false\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - message: '#^Cannot access offset ''scheme'' on array\{scheme\?\: string, host\?\: string, port\?\: int\<0, 65535\>, user\?\: string, pass\?\: string, path\?\: string, query\?\: string, fragment\?\: string\}\|false\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Favicon\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - - message: '#^Offset 0 on non\-empty\-list\ on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - - message: '#^Parameter \#1 \$body of method Appwrite\\Utopia\\Response\:\:file\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - - message: '#^Parameter \#1 \$body of method Appwrite\\Utopia\\Response\:\:file\(\) expects string, string\|false\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - - message: '#^Parameter \#1 \$data of class Utopia\\Image\\Image constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - - message: '#^Parameter \#1 \$dirty of method enshrined\\svgSanitize\\Sanitizer\:\:sanitize\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - - message: '#^Parameter \#1 \$domain of class Utopia\\Domains\\Domain constructor expects string, string\|false\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - - message: '#^Parameter \#1 \$haystack of function stripos expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - - message: '#^Parameter \#1 \$path of function pathinfo expects string, string\|false\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - - message: '#^Parameter \#1 \$source of method DOMDocument\:\:loadHTML\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - - message: '#^Parameter \#1 \.\.\.\$arrays of function array_merge expects array, array\\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - - message: '#^Parameter \#2 \.\.\.\$arrays of function array_merge expects array, array\\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - - message: '#^Variable \$output in empty\(\) always exists and is not falsy\.$#' - identifier: empty.variable - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Favicon/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Flags\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Flags/Get.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Flags/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Image\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Image/Get.php - - - - message: '#^Parameter \#1 \$body of method Appwrite\\Utopia\\Response\:\:file\(\) expects string, string\|false\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Image/Get.php - - - - message: '#^Parameter \#1 \$data of class Utopia\\Image\\Image constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Image/Get.php - - - - message: '#^Parameter \#1 \$domain of class Utopia\\Domains\\Domain constructor expects string, string\|false\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Image/Get.php - - message: '#^Variable \$output in empty\(\) always exists and is not falsy\.$#' identifier: empty.variable @@ -15984,2868 +492,42 @@ parameters: count: 1 path: src/Appwrite/Platform/Modules/Avatars/Http/Initials/Get.php - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Initials\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Initials/Get.php - - - - message: '#^Parameter \#1 \$string of function strtoupper expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/Initials/Get.php - - - - message: '#^Parameter \#1 \$string of function substr expects string, int\<0, max\> given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Initials/Get.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Initials/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\QR\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/QR/Get.php - - - - message: '#^Parameter \#1 \$body of method Utopia\\Http\\Response\:\:send\(\) expects string, string\|false\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/QR/Get.php - - - - message: '#^Parameter \#1 \$data of class Utopia\\Image\\Image constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/QR/Get.php - - - - message: '#^Result of \|\| is always false\.$#' - identifier: booleanOr.alwaysFalse - count: 2 - path: src/Appwrite/Platform/Modules/Avatars/Http/QR/Get.php - - - - message: '#^Strict comparison using \=\=\= between bool and ''1'' will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/QR/Get.php - - - - message: '#^Strict comparison using \=\=\= between bool and ''true'' will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/QR/Get.php - - - - message: '#^Strict comparison using \=\=\= between bool and 1 will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/QR/Get.php - - - - message: '#^Binary operation "\." between ''Screenshot service…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Screenshots/Get.php - - - - message: '#^Call to function is_array\(\) with array will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Screenshots/Get.php - - - - message: '#^Cannot access offset ''png'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Screenshots/Get.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Screenshots/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Screenshots\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Screenshots/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Screenshots\\Get\:\:action\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Screenshots/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Avatars\\Http\\Screenshots\\Get\:\:action\(\) has parameter \$permissions with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Screenshots/Get.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Screenshots/Get.php - - - - message: '#^Parameter \#1 \$body of method Appwrite\\Utopia\\Response\:\:file\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Screenshots/Get.php - - - - message: '#^Parameter \#1 \$data of class Utopia\\Image\\Image constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Screenshots/Get.php - - - - message: '#^Parameter \#1 \$domain of class Utopia\\Domains\\Domain constructor expects string, string\|false\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Screenshots/Get.php - - - - message: '#^Parameter \#1 \$type of method Utopia\\Http\\Response\:\:setContentType\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Avatars/Http/Screenshots/Get.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 2 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Compute\\Base\:\:getDefaultSpecification\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Compute\\Base\:\:getDefaultSpecification\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 2 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Compute\\Base\:\:getPermissions\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Compute\\Base\:\:redeployVcsSite\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getOwnerName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Parameter \#1 \$repositoryId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getRepositoryName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Parameter \#1 \$string of function mb_strimwidth expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Parameter \#1 \$string of function md5 expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Parameter \#1 \$string of function substr expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Parameter \#2 \$privateKey of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Parameter \#2 \$specifications of class Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification constructor expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Parameter \#3 \$branch of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getLatestCommit\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Parameter \#3 \$maxCpus of class Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification constructor expects float, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Parameter \#4 \$maxMemory of class Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification constructor expects int, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Part \$providerBranch \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 4 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Part \$sitesDomain \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Base.php - - - - message: '#^Cannot access offset ''cpus'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Validator/Specification.php - - - - message: '#^Cannot access offset ''memory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Validator/Specification.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification\:\:__construct\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Validator/Specification.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification\:\:__construct\(\) has parameter \$specifications with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Validator/Specification.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification\:\:getAllowedSpecifications\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Validator/Specification.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Validator/Specification.php - - - - message: '#^Property Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification\:\:\$plan type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Validator/Specification.php - - - - message: '#^Property Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification\:\:\$specifications type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Compute/Validator/Specification.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Console\\Http\\Assistant\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Console/Http/Assistant/Create.php - - - - message: '#^Parameter \#1 \$body of method Utopia\\Http\\Response\:\:chunk\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Console/Http/Assistant/Create.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Console/Http/Assistant/Create.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Console/Http/Assistant/Create.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects array\|string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Console/Http/Assistant/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Console\\Http\\Resources\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Console/Http/Resources/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Console\\Http\\Resources\\Get\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Console/Http/Resources/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Console\\Http\\Resources\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Console/Http/Resources/Get.php - - - - message: '#^Only iterables can be unpacked, mixed given\.$#' - identifier: arrayUnpacking.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Console/Http/Resources/Get.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Console/Http/Resources/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Console\\Http\\Variables\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Console/Http/Variables/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Console\\Http\\Variables\\Get\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Console/Http/Variables/Get.php - - - - message: '#^Parameter \#1 \$domain of class Utopia\\Domains\\Domain constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Console/Http/Variables/Get.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Console/Http/Variables/Get.php - - - - message: '#^Unary operation "\+" on string\|null results in an error\.$#' - identifier: unaryOp.invalid - count: 3 - path: src/Appwrite/Platform/Modules/Console/Http/Variables/Get.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Platform\\Service\:\:addAction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Console/Services/Http.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Action.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Action\:\:parseOperators\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Action\:\:parseOperators\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Action.php - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Action\:\:setHttpPath\(\) should return Appwrite\\Platform\\Action but returns Utopia\\Platform\\Action\.$#' identifier: return.type count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Action.php - - - message: '#^Parameter \#1 \$operator of static method Utopia\\Database\\Operator\:\:parseOperator\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Action.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Action\:\:getContext\(\) should return string but returns string\|null\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Action.php - - - - message: '#^Property Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Action\:\:\$context \(string\|null\) is never assigned null so it can be removed from the property type\.$#' - identifier: property.unusedType - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Action.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Cannot access offset ''max'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Cannot access offset ''min'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Cannot access offset ''relatedCollection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Cannot access offset ''side'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Cannot access offset ''twoWay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Cannot access offset ''twoWayKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Action\:\:getContext\(\) should return string but returns string\|null\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Action\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Action\:\:updateAttribute\(\) has parameter \$default with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Action\:\:updateAttribute\(\) has parameter \$elements with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Action\:\:updateAttribute\(\) has parameter \$options with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Parameter \#1 \$min of class Utopia\\Validator\\Range constructor expects float\|int, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Database\\Document\:\:getAttribute\(\) expects string, bool given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Parameter \#1 \$name of static method Utopia\\Database\\Validator\\Structure\:\:hasFormat\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Parameter \#1 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Parameter \#2 \$max of class Utopia\\Validator\\Range constructor expects float\|int, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Parameter \#2 \$type of static method Utopia\\Database\\Validator\\Structure\:\:hasFormat\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Parameter \$formatOptions of method Utopia\\Database\\Database\:\:updateAttribute\(\) expects array\\|null, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Parameter \$onDelete of method Utopia\\Database\\Database\:\:updateRelationship\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Part \$format \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Part \$type \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Property Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Action\:\:\$context \(string\|null\) is never assigned null so it can be removed from the property type\.$#' - identifier: property.unusedType - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Boolean\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Boolean/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Boolean/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Boolean\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Boolean/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Boolean/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Datetime\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Datetime/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Datetime/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Datetime\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Datetime/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Datetime/Update.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Delete.php - - - - message: '#^Cannot access offset ''relatedCollection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Delete.php - - - - message: '#^Cannot access offset ''twoWay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Delete.php - - - - message: '#^Cannot access offset ''twoWayKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Delete\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Delete.php - - - - message: '#^Parameter \#1 \$indexes of class Utopia\\Database\\Validator\\IndexDependency constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Delete.php - - - - message: '#^Parameter \#1 \$type of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Action\:\:getModel\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Delete.php - - - - message: '#^Parameter \#2 \$format of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Action\:\:getModel\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Delete.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Delete.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:purgeCachedDocument\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Email\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Email/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Email/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Email\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Email/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Email/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Enum\\Create\:\:action\(\) has parameter \$elements with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Enum/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Enum\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Enum/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Enum/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Enum\\Update\:\:action\(\) has parameter \$elements with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Enum/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Enum\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Enum/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Enum/Update.php - - - - message: '#^Cannot access offset ''max'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Float/Create.php - - - - message: '#^Cannot access offset ''min'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Float/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Float\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Float/Create.php - - - - message: '#^Parameter \#1 \$value of function floatval expects array\|bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Float/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Float/Create.php - - - - message: '#^Cannot access offset ''max'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Float/Update.php - - - - message: '#^Cannot access offset ''min'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Float/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Float\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Float/Update.php - - - - message: '#^Parameter \#1 \$value of function floatval expects array\|bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Float/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Float/Update.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Get\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Get.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Database\\Document\:\:setAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Get.php - - - - message: '#^Parameter \#1 \$type of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Action\:\:getModel\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Get.php - - - - message: '#^Parameter \#2 \$format of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Action\:\:getModel\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Get.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\IP\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/IP/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/IP/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\IP\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/IP/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/IP/Update.php - - - - message: '#^Cannot access offset ''max'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Integer/Create.php - - - - message: '#^Cannot access offset ''min'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Integer/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Integer\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Integer/Create.php - - - - message: '#^Parameter \#1 \$value of function intval expects array\|bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Integer/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Integer/Create.php - - - - message: '#^Cannot access offset ''max'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Integer/Update.php - - - - message: '#^Cannot access offset ''min'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Integer/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Integer\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Integer/Update.php - - - - message: '#^Parameter \#1 \$value of function intval expects array\|bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Integer/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Integer/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Line\\Create\:\:action\(\) has parameter \$default with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Line/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Line\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Line/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Line/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Line\\Update\:\:action\(\) has parameter \$default with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Line/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Line\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Line/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Line/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Longtext\\Create\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Longtext/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Longtext\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Longtext/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Longtext/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Longtext\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Longtext/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Longtext/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Mediumtext\\Create\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Mediumtext/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Mediumtext\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Mediumtext/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Mediumtext/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Mediumtext\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Mediumtext/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Mediumtext/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Point\\Create\:\:action\(\) has parameter \$default with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Point/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Point\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Point/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Point/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Point\\Update\:\:action\(\) has parameter \$default with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Point/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Point\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Point/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Point/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Polygon\\Create\:\:action\(\) has parameter \$default with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Polygon/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Polygon\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Polygon/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Polygon/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Polygon\\Update\:\:action\(\) has parameter \$default with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Polygon/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Polygon\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Polygon/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Polygon/Update.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Create.php - - - - message: '#^Cannot access offset ''relatedCollection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Create.php - - - - message: '#^Cannot access offset ''relationType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Create.php - - - - message: '#^Cannot access offset ''twoWayKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Create.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 5 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Create.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Relationship\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Create.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Database\\Document\:\:setAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Create.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Create.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Relationship\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Update.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Database\\Document\:\:setAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\String\\Create\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/String/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\String\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/String/Create.php - - - - message: '#^Parameter \#1 \$length of class Utopia\\Validator\\Text constructor expects int, int\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/String/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/String/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\String\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/String/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/String/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Text\\Create\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Text/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Text\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Text/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Text/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Text\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Text/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Text/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\URL\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/URL/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/URL/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\URL\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/URL/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/URL/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Varchar\\Create\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Varchar/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Varchar\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Varchar/Create.php - - - - message: '#^Parameter \#1 \$length of class Utopia\\Validator\\Text constructor expects int, int\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Varchar/Create.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Varchar/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\Varchar\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Varchar/Update.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Varchar/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Attributes\\XList\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/XList.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/XList.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects string, array\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/XList.php - - - - message: '#^Part \$attributeId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/XList.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Create\:\:action\(\) has parameter \$attributes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Create\:\:action\(\) has parameter \$indexes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Create\:\:action\(\) has parameter \$permissions with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Create\:\:buildAttributeDocument\(\) has parameter \$attribute with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Create\:\:buildIndexDocument\(\) has parameter \$attributeDocuments with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Create\:\:buildIndexDocument\(\) has parameter \$indexDef with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php - - - - message: '#^Parameter \#1 \$permissions of static method Utopia\\Database\\Helpers\\Permission\:\:aggregate\(\) expects array\\|null, array\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php - - - - message: '#^Parameter \#3 \$attribute of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Create\:\:buildAttributeDocument\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php - - - - message: '#^Parameter \#3 \$indexDef of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Create\:\:buildIndexDocument\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Create.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 3 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 6 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Action\:\:getContext\(\) should return string but returns string\|null\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Action\:\:processDocument\(\) has parameter \$collectionsCache with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Action\:\:removeReadonlyAttributes\(\) has parameter \$document with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Action\:\:removeReadonlyAttributes\(\) has parameter \$document with no value type specified in iterable type array\|Utopia\\Database\\Document\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Action\:\:removeReadonlyAttributes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Action\:\:removeReadonlyAttributes\(\) return type has no value type specified in iterable type array\|Utopia\\Database\\Document\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Action\:\:setHttpPath\(\) should return Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Action but returns Appwrite\\Platform\\Action\.$#' identifier: return.type count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Database\\Document\:\:setAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Database\\Document\:\:getAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 7 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - - - message: '#^Property Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Action\:\:\$context \(string\|null\) is never assigned null so it can be removed from the property type\.$#' - identifier: property.unusedType - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - message: '#^Variable \$relations in empty\(\) always exists and is not falsy\.$#' identifier: empty.variable count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Action.php - - - message: '#^Binary operation "\+" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Decrement.php - - - - message: '#^Binary operation "\." between ''Transaction already…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Decrement.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Decrement.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Decrement.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Attribute\\Decrement\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Decrement.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Decrement.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Decrement.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Decrement.php - - - - message: '#^Binary operation "\+" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Increment.php - - - - message: '#^Binary operation "\." between ''Transaction already…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Increment.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Increment.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Increment.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Attribute\\Increment\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Increment.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Increment.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Increment.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Increment.php - - - - message: '#^Binary operation "\+" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Delete.php - - - - message: '#^Binary operation "\." between ''Transaction already…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Delete.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Delete.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Bulk\\Delete\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Bulk\\Delete\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Delete.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Delete.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Delete.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Delete.php - - - - message: '#^Binary operation "\+" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php - - - - message: '#^Binary operation "\." between ''Transaction already…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Bulk\\Update\:\:action\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Bulk\\Update\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Bulk\\Update\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php - - - - message: '#^Parameter \#1 \$data of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Action\:\:parseOperators\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php - - - - message: '#^Parameter \#1 \$document of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Action\:\:removeReadonlyAttributes\(\) expects array\|Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array\|Utopia\\Database\\Document given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php - - - - message: '#^Parameter \#2 \$value of method Appwrite\\Usage\\Context\:\:addMetric\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php - - - - message: '#^Binary operation "\+" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Upsert.php - - - - message: '#^Binary operation "\." between ''Transaction already…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Upsert.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Upsert.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Upsert.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Bulk\\Upsert\:\:action\(\) has parameter \$documents with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Upsert.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Bulk\\Upsert\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Upsert.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Upsert.php - - - - message: '#^Parameter \#1 \$data of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Action\:\:parseOperators\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Upsert.php - - - - message: '#^Parameter \#1 \$document of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Action\:\:removeReadonlyAttributes\(\) expects array\|Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Upsert.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array\|Utopia\\Database\\Document given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Upsert.php - - - - message: '#^Parameter \#2 \$length of class Utopia\\Validator\\ArrayList constructor expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Upsert.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Upsert.php - - - - message: '#^Parameter \#2 \$value of method Appwrite\\Usage\\Context\:\:addMetric\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Upsert.php - - message: '#^Anonymous function has an unused use \$dbForProject\.$#' identifier: closure.unusedUse count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - message: '#^Binary operation "\+" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Binary operation "\." between ''Transaction already…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Cannot access offset ''\$collection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 6 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Cannot call method getId\(\) on array\|Utopia\\Database\\Document\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Cannot call method setAttribute\(\) on array\|Utopia\\Database\\Document\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Left side of && is always true\.$#' - identifier: booleanAnd.leftAlwaysTrue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Left side of \|\| is always true\.$#' - identifier: booleanOr.leftAlwaysTrue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Create\:\:action\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Create\:\:action\(\) has parameter \$documents with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Create\:\:action\(\) has parameter \$permissions with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Create\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Negated boolean expression is always false\.$#' - identifier: booleanNot.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Parameter \#1 \$array \(list\\) of array_values is already a list, call has no effect\.$#' - identifier: arrayValues.list - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Parameter \#1 \$document of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Action\:\:removeReadonlyAttributes\(\) expects array\|Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array\|Utopia\\Database\\Document given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Database\\Document\:\:setAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Database\\Document\:\:getAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Parameter \#1 \$permissions of static method Utopia\\Database\\Helpers\\Permission\:\:aggregate\(\) expects array\\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Parameter \#2 \$document of closure expects Utopia\\Database\\Document, array\|Utopia\\Database\\Document given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Parameter \#2 \$length of class Utopia\\Validator\\ArrayList constructor expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php - - - - message: '#^Binary operation "\+" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Delete.php - - - - message: '#^Binary operation "\." between ''Transaction already…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Delete.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Delete.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Delete\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Delete.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Delete.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Delete.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Delete.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Get\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Get.php - - - - message: '#^Offset ''selections'' on array\{filters\: array\, selections\: array\, limit\: int\|null, offset\: int\|null, orderAttributes\: array\, orderTypes\: array\, cursor\: Utopia\\Database\\Document\|null, cursorDirection\: string\|null\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Get.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Get.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Get.php - - - - message: '#^Parameter \#2 \$value of method Appwrite\\Usage\\Context\:\:addMetric\(\) expects int, int\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Get.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, int\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Get.php - - - - message: '#^Cannot access offset ''country'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Logs/XList.php - - - - message: '#^Cannot access offset ''iso_code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Logs/XList.php - - - - message: '#^Cannot access offset ''mode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Logs/XList.php - - - - message: '#^Cannot access offset ''userEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Logs/XList.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Logs/XList.php - - - - message: '#^Cannot access offset ''userName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Logs/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Logs\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Logs/XList.php - - - - message: '#^Parameter \#1 \$ipAddress of method MaxMind\\Db\\Reader\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Logs/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Logs/XList.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Logs/XList.php - - - - message: '#^Parameter \#1 \$userAgent of class Appwrite\\Detector\\Detector constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Logs/XList.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Logs/XList.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Logs/XList.php - - - - message: '#^Binary operation "\+" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Binary operation "\." between ''Transaction already…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 7 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Cannot call method getId\(\) on array\|Utopia\\Database\\Document\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Cannot call method setAttribute\(\) on array\|Utopia\\Database\\Document\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Update\:\:action\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Update\:\:action\(\) has parameter \$permissions with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Update\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Parameter \#1 \$array \(list\\) of array_values is already a list, call has no effect\.$#' - identifier: arrayValues.list - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Parameter \#1 \$data of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Action\:\:parseOperators\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Parameter \#1 \$document of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Action\:\:removeReadonlyAttributes\(\) expects array\|Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Parameter \#1 \$document of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array\|Utopia\\Database\\Document given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Database\\Document\:\:setAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Database\\Document\:\:getAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Parameter \#1 \$permissions of static method Utopia\\Database\\Helpers\\Permission\:\:aggregate\(\) expects array\\|null, array\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Parameter \#2 \$document of closure expects Utopia\\Database\\Document, array\|Utopia\\Database\\Document given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - - message: '#^Parameter \$document of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Action\:\:processDocument\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - message: '#^Variable \$document in PHPDoc tag @var does not match assigned variable \$collectionTableId\.$#' identifier: varTag.differentVariable count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php - - - message: '#^Binary operation "\+" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Binary operation "\." between ''Transaction already…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 7 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Cannot call method getId\(\) on array\|Utopia\\Database\\Document\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Cannot call method setAttribute\(\) on array\|Utopia\\Database\\Document\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Upsert\:\:action\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Upsert\:\:action\(\) has parameter \$permissions with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Upsert\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Parameter \#1 \$array \(list\\) of array_values is already a list, call has no effect\.$#' - identifier: arrayValues.list - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Parameter \#1 \$array of function array_is_list expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Parameter \#1 \$data of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Action\:\:parseOperators\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Parameter \#1 \$document of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Action\:\:removeReadonlyAttributes\(\) expects array\|Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array\|Utopia\\Database\\Document given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Database\\Document\:\:setAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Database\\Document\:\:getAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Parameter \#1 \$permissions of static method Utopia\\Database\\Helpers\\Permission\:\:aggregate\(\) expects array\\|null, array\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Parameter \#2 \$document of closure expects Utopia\\Database\\Document, array\|Utopia\\Database\\Document given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Strict comparison using \!\=\= between null and null will always evaluate to false\.$#' - identifier: notIdentical.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php - - - - message: '#^Instanceof between Utopia\\Database\\Query and Utopia\\Database\\Query will always evaluate to true\.$#' - identifier: instanceof.alwaysTrue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php - - - - message: '#^Offset ''selections'' on array\{filters\: array\, selections\: array\, limit\: int\|null, offset\: int\|null, orderAttributes\: array\, orderTypes\: array\, cursor\: Utopia\\Database\\Document\|null, cursorDirection\: string\|null\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php - - - - message: '#^Parameter \#1 \$string of function md5 expects string, string\|false given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php - - - - message: '#^Parameter \#2 \$data of method Utopia\\Cache\\Cache\:\:save\(\) expects array\\|string, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php - - - - message: '#^Parameter \#2 \$value of method Appwrite\\Usage\\Context\:\:addMetric\(\) expects int, int\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php - - - - message: '#^Parameter \$document of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Documents\\Action\:\:processDocument\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php - - - - message: '#^Part \$documentId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php - - message: '#^Variable \$hostname on left side of \?\? always exists and is not nullable\.$#' identifier: nullCoalesce.variable count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Indexes\\Action\:\:getContext\(\) should return string but returns string\|null\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Action.php - - - - message: '#^Property Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Indexes\\Action\:\:\$context \(string\|null\) is never assigned null so it can be removed from the property type\.$#' - identifier: property.unusedType - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Action.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Create.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Create.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Create.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Create.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Create.php - - - - message: '#^Cannot call method getArrayCopy\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Indexes\\Create\:\:action\(\) has parameter \$attributes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Indexes\\Create\:\:action\(\) has parameter \$lengths with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Indexes\\Create\:\:action\(\) has parameter \$orders with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Create.php - - - - message: '#^Parameter \#1 \$attributes of class Utopia\\Database\\Validator\\Index constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Create.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Create.php - - - - message: '#^Parameter \#2 \$indexes of class Utopia\\Database\\Validator\\Index constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Create.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Create.php - - - - message: '#^Parameter \#1 \$document of method Appwrite\\Utopia\\Response\:\:dynamic\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Indexes\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/XList.php - - - - message: '#^Part \$indexId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Indexes/XList.php - - - - message: '#^Cannot access offset ''country'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Logs/XList.php - - - - message: '#^Cannot access offset ''iso_code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Logs/XList.php - - - - message: '#^Cannot access offset ''mode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Logs/XList.php - - - - message: '#^Cannot access offset ''userEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Logs/XList.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Logs/XList.php - - - - message: '#^Cannot access offset ''userName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Logs/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Logs\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Logs/XList.php - - - - message: '#^Parameter \#1 \$ipAddress of method MaxMind\\Db\\Reader\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Logs/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Logs/XList.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Logs/XList.php - - - - message: '#^Parameter \#1 \$userAgent of class DeviceDetector\\DeviceDetector constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Logs/XList.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Logs/XList.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Logs/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\Update\:\:action\(\) has parameter \$permissions with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Update.php - - - - message: '#^Parameter \#1 \$permissions of static method Utopia\\Database\\Helpers\\Permission\:\:aggregate\(\) expects array\\|null, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Update.php - - - - message: '#^Parameter \#2 \$permissions of method Utopia\\Database\\Database\:\:updateCollection\(\) expects array\, array\\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Update.php - - message: '#^Variable \$enabled on left side of \?\?\= always exists and is not nullable\.$#' identifier: nullCoalesce.variable @@ -18853,437 +535,35 @@ parameters: path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Update.php - - message: '#^Binary operation "\*" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Usage/Get.php - - - - message: '#^Binary operation "\+\=" between \(float\|int\) and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Usage/Get.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Usage/Get.php - - - - message: '#^Cannot access offset ''factor'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Usage/Get.php - - - - message: '#^Cannot access offset ''limit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Usage/Get.php - - - - message: '#^Cannot access offset ''period'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Usage/Get.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Usage/Get.php - - - - message: '#^Match expression does not handle remaining value\: mixed$#' - identifier: match.unhandled - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Usage/Get.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:limit\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Usage/Get.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Usage/Get.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Usage/Get.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Usage/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Collections\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/XList.php - - - - message: '#^Part \$collectionIdId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/XList.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Create.php - - - - message: '#^Cannot access offset ''attributes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Create.php - - - - message: '#^Cannot access offset ''collections'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Create.php - - - - message: '#^Cannot access offset ''databases'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Create.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Create.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Create.php - - - - message: '#^Cannot access offset ''country'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Cannot access offset ''deviceBrand'' on int\|null\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Cannot access offset ''deviceModel'' on int\|null\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Cannot access offset ''deviceName'' on int\|null\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Cannot access offset ''iso_code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Cannot access offset ''mode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Cannot access offset ''userEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Cannot access offset ''userName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Logs\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Offset ''clientCode'' might not exist on array\|string\|null\.$#' + message: '#^Offset ''deviceBrand'' does not exist on int\.$#' identifier: offsetAccess.notFound count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - message: '#^Offset ''clientEngine'' might not exist on array\|string\|null\.$#' + message: '#^Offset ''deviceModel'' does not exist on int\.$#' identifier: offsetAccess.notFound count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - message: '#^Offset ''clientEngineVersion'' might not exist on array\|string\|null\.$#' + message: '#^Offset ''deviceName'' does not exist on int\.$#' identifier: offsetAccess.notFound count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - message: '#^Offset ''clientName'' might not exist on array\|string\|null\.$#' - identifier: offsetAccess.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Offset ''clientType'' might not exist on array\|string\|null\.$#' - identifier: offsetAccess.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Offset ''clientVersion'' might not exist on array\|string\|null\.$#' - identifier: offsetAccess.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Offset ''osCode'' might not exist on array\|string\|null\.$#' - identifier: offsetAccess.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Offset ''osName'' might not exist on array\|string\|null\.$#' - identifier: offsetAccess.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Offset ''osVersion'' might not exist on array\|string\|null\.$#' - identifier: offsetAccess.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Parameter \#1 \$ipAddress of method MaxMind\\Db\\Reader\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Parameter \#1 \$userAgent of class DeviceDetector\\DeviceDetector constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Logs/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Action\:\:getContext\(\) should return string but returns string\|null\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Action.php - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Action\:\:setHttpPath\(\) should return Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Action but returns Appwrite\\Platform\\Action\.$#' identifier: return.type count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Action.php - - - message: '#^Property Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Action\:\:\$context \(string\|null\) is never assigned null so it can be removed from the property type\.$#' - identifier: property.unusedType - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Action.php - - message: '#^Anonymous function has an unused use \$existing\.$#' identifier: closure.unusedUse count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Binary operation "\+" between mixed and int\<1, max\> results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Binary operation "\." between ''Document ID is…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Binary operation "\." between ''Invalid action\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Binary operation "\." between ''Transaction already…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Cannot access offset ''action'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Cannot access offset ''databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Operations\\Create\:\:action\(\) has parameter \$operations with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Operations\\Create\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Parameter \#1 \$permission of static method Utopia\\Database\\Helpers\\Permission\:\:parse\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Parameter \#2 \$documentId of method Appwrite\\Databases\\TransactionState\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 4 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Operations/Create.php - - message: '#^Anonymous function has an unused use \$queueForEvents\.$#' identifier: closure.unusedUse @@ -19314,378 +594,12 @@ parameters: count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - message: '#^Binary operation "\." between ''database_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 19 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Cannot access offset string\|null on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Cannot call method setAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:getAttributeNameFromData\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:getAttributeNameFromData\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleBulkCreateOperation\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleBulkCreateOperation\(\) has parameter \$state with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleBulkDeleteOperation\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleBulkDeleteOperation\(\) has parameter \$state with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleBulkUpdateOperation\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleBulkUpdateOperation\(\) has parameter \$state with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleBulkUpsertOperation\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleBulkUpsertOperation\(\) has parameter \$state with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleCreateOperation\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleCreateOperation\(\) has parameter \$state with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleDecrementOperation\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleDecrementOperation\(\) has parameter \$state with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleDeleteOperation\(\) has parameter \$state with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleIncrementOperation\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleIncrementOperation\(\) has parameter \$state with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleUpdateOperation\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleUpdateOperation\(\) has parameter \$state with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleUpsertOperation\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleUpsertOperation\(\) has parameter \$state with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - message: '#^PHPDoc tag @throws with type Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Structure\|Throwable\|Utopia\\Database\\Validator\\Authorization is not subtype of Throwable$#' identifier: throws.notThrowable count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#1 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#2 \$document of method Utopia\\Database\\Database\:\:upsertDocument\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#2 \$documents of method Utopia\\Database\\Database\:\:upsertDocuments\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#2 \$documents of method Utopia\\Database\\Database\:\:upsertDocuments\(\) expects array\, list\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#3 \$data of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleBulkCreateOperation\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#3 \$documentId of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleCreateOperation\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#3 \$documentId of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleDecrementOperation\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#3 \$documentId of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleDeleteOperation\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#3 \$documentId of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleIncrementOperation\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#3 \$documentId of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleUpdateOperation\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#3 \$documentId of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleUpsertOperation\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#4 \$data of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleBulkDeleteOperation\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#4 \$data of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleBulkUpdateOperation\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#4 \$data of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleBulkUpsertOperation\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#4 \$data of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleCreateOperation\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#4 \$data of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleDecrementOperation\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#4 \$data of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleIncrementOperation\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#4 \$data of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleUpdateOperation\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \#4 \$data of method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\Update\:\:handleUpsertOperation\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \$max of method Utopia\\Database\\Database\:\:increaseDocumentAttribute\(\) expects float\|int\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \$min of method Utopia\\Database\\Database\:\:decreaseDocumentAttribute\(\) expects float\|int\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \$value of method Utopia\\Database\\Database\:\:decreaseDocumentAttribute\(\) expects float\|int, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Parameter \$value of method Utopia\\Database\\Database\:\:increaseDocumentAttribute\(\) expects float\|int, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Part \$collectionInternalId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Part \$databaseInternalId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 12 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - message: '#^Variable \$currentDocumentId on left side of \?\? always exists and is always null\.$#' identifier: nullCoalesce.variable @@ -19693,1013 +607,23 @@ parameters: path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\Transactions\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/XList.php - - - - message: '#^Binary operation "\*" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/Get.php - - - - message: '#^Binary operation "\+\=" between \(float\|int\) and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/Get.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/Get.php - - - - message: '#^Cannot access offset ''factor'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/Get.php - - - - message: '#^Cannot access offset ''limit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/Get.php - - - - message: '#^Cannot access offset ''period'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/Get.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/Get.php - - - - message: '#^Match expression does not handle remaining value\: mixed$#' - identifier: match.unhandled - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/Get.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:limit\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/Get.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/Get.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/Get.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/Get.php - - - - message: '#^Binary operation "\*" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/XList.php - - - - message: '#^Binary operation "\+\=" between \(float\|int\) and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/XList.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/XList.php - - - - message: '#^Cannot access offset ''factor'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/XList.php - - - - message: '#^Cannot access offset ''limit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/XList.php - - - - message: '#^Cannot access offset ''period'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/XList.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/XList.php - - - - message: '#^Match expression does not handle remaining value\: mixed$#' - identifier: match.unhandled - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/XList.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:limit\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/XList.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/Usage/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\Databases\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/XList.php - - - - message: '#^Part \$databaseId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/Databases/XList.php - - - - message: '#^Cannot access offset ''country'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Cannot access offset ''deviceBrand'' on int\|null\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Cannot access offset ''deviceModel'' on int\|null\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Cannot access offset ''deviceName'' on int\|null\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Cannot access offset ''iso_code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Cannot access offset ''mode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Cannot access offset ''userEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Cannot access offset ''userName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Logs\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Offset ''clientCode'' might not exist on array\|string\|null\.$#' + message: '#^Offset ''deviceBrand'' does not exist on int\.$#' identifier: offsetAccess.notFound count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - message: '#^Offset ''clientEngine'' might not exist on array\|string\|null\.$#' + message: '#^Offset ''deviceModel'' does not exist on int\.$#' identifier: offsetAccess.notFound count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - message: '#^Offset ''clientEngineVersion'' might not exist on array\|string\|null\.$#' + message: '#^Offset ''deviceName'' does not exist on int\.$#' identifier: offsetAccess.notFound count: 1 path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - message: '#^Offset ''clientName'' might not exist on array\|string\|null\.$#' - identifier: offsetAccess.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Offset ''clientType'' might not exist on array\|string\|null\.$#' - identifier: offsetAccess.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Offset ''clientVersion'' might not exist on array\|string\|null\.$#' - identifier: offsetAccess.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Offset ''osCode'' might not exist on array\|string\|null\.$#' - identifier: offsetAccess.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Offset ''osName'' might not exist on array\|string\|null\.$#' - identifier: offsetAccess.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Offset ''osVersion'' might not exist on array\|string\|null\.$#' - identifier: offsetAccess.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Parameter \#1 \$ipAddress of method MaxMind\\Db\\Reader\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Parameter \#1 \$userAgent of class DeviceDetector\\DeviceDetector constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Logs/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Boolean\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Boolean/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Boolean\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Boolean/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Datetime\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Datetime/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Datetime\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Datetime/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Delete\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Email\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Email/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Email\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Email/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Enum\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Enum/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Enum\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Enum/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Float\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Float/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Float\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Float/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Get\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\IP\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/IP/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\IP\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/IP/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Integer\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Integer/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Integer\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Integer/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Line\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Line/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Line\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Line/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Longtext\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Longtext/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Longtext\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Longtext/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Mediumtext\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Mediumtext/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Mediumtext\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Mediumtext/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Point\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Point/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Point\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Point/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Polygon\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Polygon/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Polygon\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Polygon/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Relationship\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Relationship/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Relationship\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Relationship/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\String\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/String/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\String\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/String/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Text\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Text/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Text\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Text/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\URL\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/URL/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\URL\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/URL/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Varchar\\Create\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Varchar/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\Varchar\\Update\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Varchar/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Http\\TablesDB\\Tables\\Columns\\XList\:\:getResponseModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/XList.php - - - - message: '#^Parameter \#2 \$length of class Utopia\\Validator\\ArrayList constructor expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Bulk/Upsert.php - - - - message: '#^Parameter \#2 \$length of class Utopia\\Validator\\ArrayList constructor expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Create.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Cannot access offset ''onDelete'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Cannot access offset ''relatedCollection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Cannot access offset ''relationType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Cannot access offset ''twoWay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Cannot access offset ''twoWayKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Cannot access offset int\|string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Cannot call method deleteCollection\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Workers\\Databases\:\:deleteByGroup\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Databases\\Workers\\Databases\:\:deleteDatabase\(\) has parameter \$dbForProject with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#1 \$array of function array_diff expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#1 \$value of function floatval expects array\|bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#1 \$value of function intval expects array\|bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#1 \$value of function strval expects bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#10 \$formatOptions of method Utopia\\Database\\Database\:\:createAttribute\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#11 \$filters of method Utopia\\Database\\Database\:\:createAttribute\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#2 \$collection of method Appwrite\\Platform\\Modules\\Databases\\Workers\\Databases\:\:deleteCollection\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:createAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:createIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:deleteAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:deleteIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:deleteRelationship\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:purgeCachedDocument\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#2 \$queries of method Utopia\\Database\\Database\:\:deleteDocuments\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Logger\\Log\:\:addTag\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#2 \$value of static method Utopia\\Database\\Query\:\:notEqual\(\) expects array\\|bool\|float\|int\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#3 \$database of method Appwrite\\Platform\\Modules\\Databases\\Workers\\Databases\:\:deleteByGroup\(\) expects Utopia\\Database\\Database, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#3 \$dbForProject of method Appwrite\\Platform\\Modules\\Databases\\Workers\\Databases\:\:deleteCollection\(\) expects Utopia\\Database\\Database, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#3 \$type of method Utopia\\Database\\Database\:\:createAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#3 \$type of method Utopia\\Database\\Database\:\:createIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#4 \$attributes of method Utopia\\Database\\Database\:\:createIndex\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#4 \$size of method Utopia\\Database\\Database\:\:createAttribute\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#5 \$lengths of method Utopia\\Database\\Database\:\:createIndex\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#5 \$required of method Utopia\\Database\\Database\:\:createAttribute\(\) expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#6 \$orders of method Utopia\\Database\\Database\:\:createIndex\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#7 \$signed of method Utopia\\Database\\Database\:\:createAttribute\(\) expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#8 \$array of method Utopia\\Database\\Database\:\:createAttribute\(\) expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \#9 \$format of method Utopia\\Database\\Database\:\:createAttribute\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \$id of method Utopia\\Database\\Database\:\:createRelationship\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \$onDelete of method Utopia\\Database\\Database\:\:createRelationship\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \$twoWay of method Utopia\\Database\\Database\:\:createRelationship\(\) expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \$twoWayKey of method Utopia\\Database\\Database\:\:createRelationship\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Parameter \$type of method Utopia\\Database\\Database\:\:createRelationship\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Databases/Workers/Databases.php - - - - message: '#^Binary operation "\*" between mixed and 1000 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Create\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Create.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Http\\Adapter\\Swoole\\Request\:\:getFiles\(\) expects string, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Create.php - - - - message: '#^Parameter \#1 \$path of function pathinfo expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Create.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:getFileMimeType\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Create.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:getFileSize\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Create.php - - - - message: '#^Parameter \#1 \$source of method Utopia\\Storage\\Device\:\:upload\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Create.php - - - - message: '#^Parameter \#1 \$value of function strval expects bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Create.php - - - - message: '#^Parameter \#3 \$chunk of method Utopia\\Storage\\Device\:\:upload\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Create.php - - - - message: '#^Parameter \#4 \$chunks of method Utopia\\Storage\\Device\:\:upload\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Create.php - - - - message: '#^Parameter \#5 \$metadata of method Utopia\\Storage\\Device\:\:upload\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Delete.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:delete\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Delete.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Download\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Download/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Download\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Download/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:exists\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Download/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:getFileSize\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Download/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:read\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Download/Get.php - - - - message: '#^Parameter \#2 \$offset of method Utopia\\Storage\\Device\:\:read\(\) expects int, int\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Download/Get.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Download/Get.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, int\<1, max\> given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Download/Get.php - - message: '#^Variable \$device might not be defined\.$#' identifier: variable.undefined @@ -20712,198 +636,6 @@ parameters: count: 5 path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Download/Get.php - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Duplicate\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Duplicate/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Duplicate\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Duplicate/Create.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:exists\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Duplicate/Create.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:transfer\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Duplicate/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Status\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Status/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Status\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Status/Update.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Status/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Template\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Template/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Template\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Template/Create.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Template/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Vcs\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Vcs/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\Vcs\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Vcs/Create.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/Vcs/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Deployments\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/XList.php - - - - message: '#^Offset ''selections'' on array\{filters\: array\, selections\: array\, limit\: int\|null, offset\: int\|null, orderAttributes\: array\, orderTypes\: array\, cursor\: Utopia\\Database\\Document\|null, cursorDirection\: string\|null\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/XList.php - - - - message: '#^Part \$deploymentId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Deployments/XList.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 5 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Binary operation "\*" between \(float\|int\) and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Binary operation "\*" between mixed and 1000 results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Binary operation "\*" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Binary operation "\+" between mixed and 60 results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Binary operation "\." between ''Runtime "'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Binary operation "\." between ''cd /usr/local…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Call to function is_array\(\) with array\ will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Call to function is_bool\(\) with bool will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - message: '#^Call to method getAttribute\(\) on an unknown class Appwrite\\Platform\\Modules\\Functions\\Http\\Executions\\Utopia\\Database\\Document\.$#' identifier: class.notFound @@ -20922,312 +654,24 @@ parameters: count: 1 path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Cannot access offset ''continent'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Cannot access offset ''country'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Cannot access offset ''cpus'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Cannot access offset ''image'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Cannot access offset ''iso_code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Cannot access offset ''memory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Cannot access offset ''startCommand'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Cannot access offset ''version'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Cannot access offset ''x\-appwrite\-execution\-id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 4 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Expression in empty\(\) is not falsy\.$#' - identifier: empty.expr - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Executions\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Executions\\Create\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Executions\\Create\:\:enqueueDeletes\(\) returns void but does not have any side effects\.$#' identifier: void.pure count: 1 path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Executions\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Offset ''x\-appwrite\-trigger'' on non\-empty\-array\ on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Offset ''x\-appwrite\-user\-id'' on non\-empty\-array\ on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Offset ''x\-appwrite\-user\-jwt'' on non\-empty\-array\ on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - message: '#^PHPDoc tag @var for variable \$session contains unknown class Appwrite\\Platform\\Modules\\Functions\\Http\\Executions\\Utopia\\Database\\Document\.$#' identifier: class.notFound count: 1 path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - message: '#^Parameter \#1 \$haystack of function str_ends_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \#1 \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \#1 \$proof of method Utopia\\Auth\\Proof\:\:verify\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \#1 \$value of function strval expects bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \#2 \$hash of method Utopia\\Auth\\Proof\:\:verify\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \#2 \$message of class Appwrite\\Extend\\Exception constructor expects string\|null, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \#2 \$permissions of class Utopia\\Database\\Validator\\Authorization\\Input constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \#2 \$resourceId of method Appwrite\\Platform\\Modules\\Functions\\Http\\Executions\\Create\:\:enqueueDeletes\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \$cpus of method Executor\\Executor\:\:createExecution\(\) expects float, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \$entrypoint of method Executor\\Executor\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \$image of method Executor\\Executor\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \$logging of method Executor\\Executor\:\:createExecution\(\) expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \$memory of method Executor\\Executor\:\:createExecution\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \$source of method Executor\\Executor\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \$timeout of method Executor\\Executor\:\:createExecution\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Parameter \$version of method Executor\\Executor\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Part \$command \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Part \$platform\[''apiHostname''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Result of && is always false\.$#' - identifier: booleanAnd.alwaysFalse - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - message: '#^Result of method Appwrite\\Utopia\\Response\:\:dynamic\(\) \(void\) is used\.$#' identifier: method.void count: 1 path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - message: '#^Right side of && is always false\.$#' - identifier: booleanAnd.rightAlwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - - message: '#^Strict comparison using \=\=\= between bool and ''true'' will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - message: '#^Variable \$body on left side of \?\? always exists and is not nullable\.$#' identifier: nullCoalesce.variable @@ -21246,1464 +690,18 @@ parameters: count: 1 path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Executions\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Executions\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Delete.php - - - - message: '#^Parameter \#1 \$datetime of function strtotime expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Executions\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Executions\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Get.php - - - - message: '#^Parameter \#1 \$datetime of function strtotime expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Executions\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Executions\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Executions\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/XList.php - - - - message: '#^Parameter \#1 \$datetime of function strtotime expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/XList.php - - - - message: '#^Part \$executionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/XList.php - - - - message: '#^Part \$timeout \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Executions/XList.php - - - - message: '#^Binary operation "\+" between mixed and 86400 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - message: '#^Call to an undefined method Appwrite\\Event\\Event\:\:setSubscribers\(\)\.$#' identifier: method.notFound count: 1 path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - message: '#^Cannot call method limit\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Cannot call method remaining\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Cannot call method setParam\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Cannot call method time\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Cannot call method trigger\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Create\:\:action\(\) has parameter \$events with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Create\:\:action\(\) has parameter \$execute with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Create\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Create\:\:action\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Parameter \#1 \$adapter of class Utopia\\Abuse\\Abuse constructor expects Utopia\\Abuse\\Adapter, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Parameter \#1 \$teamId of method Appwrite\\Platform\\Modules\\Compute\\Base\:\:getPermissions\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Http\\Request\:\:getHeader\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Parameter \#2 \$specifications of class Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification constructor expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, \(float\|int\) given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Parameter \#3 \$maxCpus of class Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification constructor expects float, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Parameter \#4 \$maxMemory of class Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification constructor expects int, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Parameter \$request of method Appwrite\\Platform\\Modules\\Compute\\Base\:\:redeployVcsFunction\(\) expects Utopia\\Http\\Adapter\\Swoole\\Request, Utopia\\Http\\Request given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Part \$functionsDomain \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Delete.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Deployment\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Deployment/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Deployment\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Deployment/Update.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Deployment/Update.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Deployment/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Get.php - - - - message: '#^If condition is always false\.$#' - identifier: if.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Update\:\:action\(\) has parameter \$events with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Update\:\:action\(\) has parameter \$execute with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Update\:\:action\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - - - message: '#^Parameter \#1 \$teamId of method Appwrite\\Platform\\Modules\\Compute\\Base\:\:getPermissions\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - - - message: '#^Parameter \#2 \$deploymentId of method Executor\\Executor\:\:deleteRuntime\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - - - message: '#^Parameter \#2 \$specifications of class Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification constructor expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - - - message: '#^Parameter \#3 \$maxCpus of class Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification constructor expects float, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - - - message: '#^Parameter \#4 \$maxMemory of class Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification constructor expects int, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - message: '#^Variable \$enabled on left side of \?\?\= always exists and is not nullable\.$#' identifier: nullCoalesce.variable count: 1 path: src/Appwrite/Platform/Modules/Functions/Http/Functions/Update.php - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Functions\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/XList.php - - - - message: '#^Part \$functionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Functions/XList.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Runtimes/XList.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Runtimes/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Runtimes\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Runtimes/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Runtimes\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Runtimes/XList.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Runtimes/XList.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Specifications/XList.php - - - - message: '#^Cannot access offset ''cpus'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Specifications/XList.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Specifications/XList.php - - - - message: '#^Cannot access offset ''memory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Specifications/XList.php - - - - message: '#^Cannot access offset ''slug'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Specifications/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Specifications\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Specifications/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Specifications\\XList\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Specifications/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Specifications\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Specifications/XList.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Specifications/XList.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Specifications/XList.php - - - - message: '#^Cannot access offset ''id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Templates\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Templates\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/Get.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/Get.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/Get.php - - - - message: '#^Cannot access offset ''runtimes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/XList.php - - - - message: '#^Cannot access offset ''score'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/XList.php - - - - message: '#^Cannot access offset ''useCases'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Templates\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Templates\\XList\:\:action\(\) has parameter \$runtimes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Templates\\XList\:\:action\(\) has parameter \$usecases with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Templates\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/XList.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/XList.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/XList.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/XList.php - - - - message: '#^Parameter \#1 \$array of function array_slice expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/XList.php - - - - message: '#^Parameter \#1 \$array of function usort expects TArray of array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/XList.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/XList.php - - - - message: '#^Parameter \#2 \.\.\.\$arrays of function array_intersect expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Templates/XList.php - - - - message: '#^Binary operation "\*" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/Get.php - - - - message: '#^Binary operation "\+\=" between \(float\|int\) and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/Get.php - - - - message: '#^Binary operation "/" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/Get.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/Get.php - - - - message: '#^Cannot access offset ''factor'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/Get.php - - - - message: '#^Cannot access offset ''limit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/Get.php - - - - message: '#^Cannot access offset ''period'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/Get.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/Get.php - - - - message: '#^Match expression does not handle remaining value\: mixed$#' - identifier: match.unhandled - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Usage\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Usage\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/Get.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:limit\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/Get.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 11 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/Get.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/Get.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/Get.php - - - - message: '#^Binary operation "\*" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/XList.php - - - - message: '#^Binary operation "\+\=" between \(float\|int\) and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/XList.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/XList.php - - - - message: '#^Cannot access offset ''factor'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/XList.php - - - - message: '#^Cannot access offset ''limit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/XList.php - - - - message: '#^Cannot access offset ''period'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/XList.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/XList.php - - - - message: '#^Match expression does not handle remaining value\: mixed$#' - identifier: match.unhandled - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Usage\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Usage\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/XList.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:limit\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/XList.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Usage/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Variables\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Variables\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Create.php - - - - message: '#^Parameter \#1 \$teamId of method Appwrite\\Platform\\Modules\\Compute\\Base\:\:getPermissions\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Create.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Variables\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Variables\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Delete.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Delete.php - - - - message: '#^Right side of \|\| is always false\.$#' - identifier: booleanOr.rightAlwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Delete.php - - - - message: '#^Strict comparison using \=\=\= between Utopia\\Database\\Document and false will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Variables\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Variables\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Get.php - - - - message: '#^Right side of \|\| is always false\.$#' - identifier: booleanOr.rightAlwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Get.php - - - - message: '#^Strict comparison using \=\=\= between Utopia\\Database\\Document and false will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Variables\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Variables\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Update.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Update.php - - - - message: '#^Strict comparison using \=\=\= between Utopia\\Database\\Document and false will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Variables\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Http\\Variables\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/XList.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Http/Variables/XList.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Platform\\Service\:\:addAction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 30 - path: src/Appwrite/Platform/Modules/Functions/Services/Http.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Binary operation "\*" between \(float\|int\) and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Binary operation "\*" between mixed and 1000 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Binary operation "\*" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Binary operation "\+" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Binary operation "\." between ''Create \\'''' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Binary operation "\." between ''Runtime "'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Binary operation "\." between ''http\://''\|''https\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Binary operation "\." between mixed and "\\n" results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Binary operation "\.\=" between mixed and non\-falsy\-string results in an error\.$#' - identifier: assignOp.invalid - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Binary operation "\.\=" between mixed and string results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Binary operation "\.\=" between string and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Call to function is_array\(\) with array will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Call to function is_null\(\) with array will always evaluate to false\.$#' - identifier: function.impossibleType - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Call to function is_null\(\) with null will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Cannot access offset ''bundleCommand'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Cannot access offset ''content'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Cannot access offset ''cpus'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Cannot access offset ''envCommand'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Cannot access offset ''memory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Cannot access offset ''output'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Cannot access offset ''path'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 4 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 10 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Instanceof between Appwrite\\Event\\Realtime and Appwrite\\Event\\Realtime will always evaluate to true\.$#' - identifier: instanceof.alwaysTrue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Instanceof between Utopia\\Database\\Database and Utopia\\Database\\Database will always evaluate to true\.$#' - identifier: instanceof.alwaysTrue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Instanceof between Utopia\\Database\\Document and Utopia\\Database\\Document will always evaluate to true\.$#' - identifier: instanceof.alwaysTrue - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Match expression does not handle remaining value\: string$#' - identifier: match.unhandled - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Workers\\Builds\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Workers\\Builds\:\:afterBuildSuccess\(\) has parameter \$runtime with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Workers\\Builds\:\:buildDeployment\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Workers\\Builds\:\:buildDeployment\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Workers\\Builds\:\:cancelDeployment\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Workers\\Builds\:\:getCommand\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Workers\\Builds\:\:getRuntime\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Workers\\Builds\:\:getRuntime\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Workers\\Builds\:\:getVersion\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Workers\\Builds\:\:runGitAction\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#1 \$arg of function escapeshellarg expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#1 \$framework of class Utopia\\Detector\\Detector\\Rendering constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getOwnerName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#1 \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#1 \$message of static method Utopia\\Console\:\:error\(\) expects string, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#1 \$owner of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:generateCloneCommand\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#1 \$repositoryId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getRepositoryName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#1 \$string of function mb_substr expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#1 \$string of function md5 expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#1 \$string of function rtrim expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:deleteDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#2 \$privateKey of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 16 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#2 \$repositoryName of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:generateCloneCommand\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#2 \$value of method Appwrite\\Usage\\Context\:\:addMetric\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Logger\\Log\:\:addTag\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 8 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#22 \$platform of method Appwrite\\Platform\\Modules\\Functions\\Workers\\Builds\:\:buildDeployment\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#3 \$commentId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getComment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#3 \$commentId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:updateComment\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#3 \$providerCommitHash of method Appwrite\\Platform\\Modules\\Functions\\Workers\\Builds\:\:runGitAction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#3 \$version of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:generateCloneCommand\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#4 \$versionType of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:generateCloneCommand\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \#5 \$adapter of method Appwrite\\Platform\\Modules\\Functions\\Workers\\Builds\:\:afterBuildSuccess\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \$cpus of method Executor\\Executor\:\:createRuntime\(\) expects float, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \$entrypoint of method Executor\\Executor\:\:createRuntime\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \$image of method Executor\\Executor\:\:createRuntime\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \$memory of method Executor\\Executor\:\:createRuntime\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \$outputDirectory of method Executor\\Executor\:\:createRuntime\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \$source of method Executor\\Executor\:\:createRuntime\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Parameter \$timeout of method Executor\\Executor\:\:getLogs\(\) expects string, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Part \$cloneOwner \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Part \$cloneRepository \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Part \$platform\[''apiHostname''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Part \$projectName \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Part \$region \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Part \$resourceName \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Result of && is always false\.$#' - identifier: booleanAnd.alwaysFalse - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Strict comparison using \=\=\= between ''functionId''\|''siteId'' and ''functions'' will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - - message: '#^Strict comparison using \=\=\= between mixed~''canceled'' and ''canceled'' will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - message: '#^Undefined variable\: \$cpus$#' identifier: variable.undefined @@ -22746,1320 +744,12 @@ parameters: count: 1 path: src/Appwrite/Platform/Modules/Functions/Workers/Builds.php - - - message: '#^Binary operation "\.\=" between mixed and string results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Cannot access offset ''screenshot'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Cannot access offset ''screenshotSleep'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Functions\\Workers\\Screenshots\:\:appendToLogs\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Offset ''headers'' on array\{headers\: array\{x\-appwrite\-hostname\: mixed\}, url\: non\-falsy\-string, theme\: ''dark''\|''light''\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Parameter \#1 \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Database\\Document\:\:setAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Parameter \#1 \$message of class Exception constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Parameter \#1 \$value of function intval expects array\|bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Parameter \#2 \$data of method Utopia\\Storage\\Device\:\:write\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Part \$rule\-\>getAttribute\(''domain''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Functions/Workers/Screenshots.php - - - - message: '#^Parameter \#1 \$host of class Appwrite\\ClamAV\\Network constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/AntiVirus/Get.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/AntiVirus/Get.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Cache/Get.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Pools\\Group\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Cache/Get.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Cache\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, Utopia\\Pools\\Pool\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Cache/Get.php - - - - message: '#^Part \$cache \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Cache/Get.php - - - - message: '#^Binary operation "\." between ''/CN\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Certificate/Get.php - - - - message: '#^Call to function is_array\(\) with array will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Certificate/Get.php - - - - message: '#^Cannot access offset ''CN'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Certificate/Get.php - - - - message: '#^Cannot access offset ''O'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Certificate/Get.php - - - - message: '#^Cannot access offset ''peer_certificate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Certificate/Get.php - - - - message: '#^Parameter \#1 \$certificate of function openssl_x509_parse expects OpenSSLCertificate\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Certificate/Get.php - - - - message: '#^Parameter \#5 \$optional of method Utopia\\Platform\\Action\:\:param\(\) expects bool, string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Certificate/Get.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/DB/Get.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Pools\\Group\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/DB/Get.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Database\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, Utopia\\Pools\\Pool\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/DB/Get.php - - - - message: '#^Part \$database \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/DB/Get.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/PubSub/Get.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Pools\\Group\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/PubSub/Get.php - - - - message: '#^Part \$pubsub \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/PubSub/Get.php - - - - message: '#^Match expression does not handle remaining value\: string$#' - identifier: match.unhandled - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Queue/Failed/Get.php - - - - message: '#^Cannot access offset ''connected_clients'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Stats/Get.php - - - - message: '#^Cannot access offset ''keyspace_hits'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Stats/Get.php - - - - message: '#^Cannot access offset ''keyspace_misses'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Stats/Get.php - - - - message: '#^Cannot access offset ''uptime_in_seconds'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Stats/Get.php - - - - message: '#^Cannot access offset ''used_memory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Stats/Get.php - - - - message: '#^Cannot access offset ''used_memory_human'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Stats/Get.php - - - - message: '#^Cannot access offset ''used_memory_peak'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Stats/Get.php - - - - message: '#^Cannot access offset ''used_memory_peak_human'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Stats/Get.php - - - - message: '#^Cannot call method info\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Stats/Get.php - - - - message: '#^Parameter \#1 \$bytes of static method Utopia\\Storage\\Storage\:\:human\(\) expects int, float given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Stats/Get.php - - - - message: '#^Cannot access offset 9 on array\|false\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Time/Get.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Time/Get.php - - - - message: '#^Parameter \#2 \$string of function unpack expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Time/Get.php - - - - message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Health/Http/Health/Time/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\DevKeys\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\DevKeys\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\DevKeys\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\DevKeys\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Delete.php - - - - message: '#^Strict comparison using \=\=\= between Utopia\\Database\\Document and false will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\DevKeys\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\DevKeys\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Get.php - - - - message: '#^Strict comparison using \=\=\= between Utopia\\Database\\Document and false will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\DevKeys\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\DevKeys\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Update.php - - - - message: '#^Strict comparison using \=\=\= between Utopia\\Database\\Document and false will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\DevKeys\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\DevKeys\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\DevKeys\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/DevKeys/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\Action\:\:getPermissions\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Action.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Binary operation "\." between ''appwrite\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Binary operation "\." between ''mysql\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Cannot access offset ''\$collection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Cannot access offset ''attributes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Cannot access offset ''disabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Cannot access offset ''projects'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Cannot access offset int\|string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^PHPDoc tag @var for variable \$collections has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Parameter \#1 \$callback of function array_map expects \(callable\(mixed\)\: mixed\)\|null, Closure\(array\)\: Utopia\\Database\\Document given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Parameter \#1 \$dsn of class Utopia\\DSN\\DSN constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Parameter \#1 \$input of function array_rand expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Database\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, Utopia\\Pools\\Pool\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Parameter \#2 \$haystack of function array_search expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\Labels\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Labels/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\Team\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Team/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\Team\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Team/Update.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Team/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/Update.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 3 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Cannot access offset ''attributes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Cannot access offset ''filters'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Cannot access offset ''platform'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Cannot access offset ''projects'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Cannot call method getValues\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\XList\:\:find\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\XList\:\:find\(\) has parameter \$selectQueries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\XList\:\:find\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\XList\:\:getAttributeToSubQueryFilters\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Offset ''selections'' on array\{filters\: array\, selections\: array\, limit\: int\|null, offset\: int\|null, orderAttributes\: array\, orderTypes\: array\, cursor\: Utopia\\Database\\Document\|null, cursorDirection\: string\|null\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Parameter \#1 \$array of function array_flip expects array\, list given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Parameter \#1 \$haystack of function str_starts_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Parameter \#2 \$queries of method Utopia\\Database\\Database\:\:find\(\) expects array\, array given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Part \$projectId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 2 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Property Appwrite\\Platform\\Modules\\Projects\\Http\\Projects\\XList\:\:\$attributeToSubQueryFilters type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Projects/XList.php - - - - message: '#^Cannot call method getDocument\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Schedules/Create.php - - - - message: '#^Cannot call method getSequence\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Schedules/Create.php - - - - message: '#^Cannot call method isEmpty\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Schedules/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Schedules\\Create\:\:getResourceTypes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Schedules/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Projects\\Http\\Schedules\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Schedules/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Schedules/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Schedules/XList.php - - - - message: '#^Part \$scheduleId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Projects/Http/Schedules/XList.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Platform\\Service\:\:addAction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 10 - path: src/Appwrite/Platform/Modules/Projects/Services/Http.php - - - - message: '#^Call to an undefined method object\:\:getDescription\(\)\.$#' - identifier: method.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Action.php - - - - message: '#^Call to an undefined method object\:\:isValid\(\)\.$#' - identifier: method.notFound - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Action.php - - - - message: '#^Call to function is_null\(\) with null will always evaluate to true\.$#' - identifier: function.alreadyNarrowedType - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Action.php - - - - message: '#^Cannot call method getDescription\(\) on object\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Action\:\:validateDomainRestrictions\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Action.php - - - - message: '#^Only iterables can be unpacked, mixed given\.$#' - identifier: arrayUnpacking.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Action.php - - - - message: '#^Parameter \#1 \$domain of class Utopia\\Domains\\Domain constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Action.php - - - - message: '#^Parameter \#1 \$domain of class Utopia\\Domains\\Domain constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Action.php - - - - message: '#^Parameter \#1 \$validators of class Utopia\\Validator\\AnyOf constructor expects array\, list\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Proxy/Action.php - - - - message: '#^Parameter \#2 \$message of class Appwrite\\Extend\\Exception constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Proxy/Action.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 8 - path: src/Appwrite/Platform/Modules/Proxy/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\API\\Create\:\:__construct\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/API/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\API\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/API/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\API\\Create\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/API/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\API\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/API/Create.php - - - - message: '#^Parameter \#1 \$dnsValidatorClass of method Appwrite\\Platform\\Modules\\Proxy\\Action\:\:__construct\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/API/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Function\\Create\:\:__construct\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Function/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Function\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Function/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Function\\Create\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Function/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Function\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Function/Create.php - - - - message: '#^Parameter \#1 \$dnsValidatorClass of method Appwrite\\Platform\\Modules\\Proxy\\Action\:\:__construct\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Function/Create.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Function/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Get\:\:__construct\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Get.php - - - - message: '#^Parameter \#1 \$dnsValidatorClass of method Appwrite\\Platform\\Modules\\Proxy\\Action\:\:__construct\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Get.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Get.php - - - - message: '#^Match expression does not handle remaining value\: string$#' - identifier: match.unhandled - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Redirect/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Redirect\\Create\:\:__construct\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Redirect/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Redirect\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Redirect/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Redirect\\Create\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Redirect/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Redirect\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Redirect/Create.php - - - - message: '#^Parameter \#1 \$dnsValidatorClass of method Appwrite\\Platform\\Modules\\Proxy\\Action\:\:__construct\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Redirect/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Site\\Create\:\:__construct\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Site/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Site\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Site/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Site\\Create\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Site/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Site\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Site/Create.php - - - - message: '#^Parameter \#1 \$dnsValidatorClass of method Appwrite\\Platform\\Modules\\Proxy\\Action\:\:__construct\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Site/Create.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Site/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Verification\\Update\:\:__construct\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Verification/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Verification\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Verification/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\Verification\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Verification/Update.php - - - - message: '#^Parameter \#1 \$dnsValidatorClass of method Appwrite\\Platform\\Modules\\Proxy\\Action\:\:__construct\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Verification/Update.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:updateDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Verification/Update.php - - message: '#^Result of method Appwrite\\Utopia\\Response\:\:dynamic\(\) \(void\) is used\.$#' identifier: method.void count: 1 path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/Verification/Update.php - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\XList\:\:__construct\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Proxy\\Http\\Rules\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/XList.php - - - - message: '#^Parameter \#1 \$dnsValidatorClass of method Appwrite\\Platform\\Modules\\Proxy\\Action\:\:__construct\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/XList.php - - - - message: '#^Part \$ruleId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Proxy/Http/Rules/XList.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Platform\\Service\:\:addAction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 8 - path: src/Appwrite/Platform/Modules/Proxy/Services/Http.php - - - - message: '#^Binary operation "\*" between mixed and 1000 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Create\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Create\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Http\\Adapter\\Swoole\\Request\:\:getFiles\(\) expects string, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php - - - - message: '#^Parameter \#1 \$path of function pathinfo expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:getFileMimeType\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:getFileSize\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php - - - - message: '#^Parameter \#1 \$source of method Utopia\\Storage\\Device\:\:upload\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php - - - - message: '#^Parameter \#1 \$value of function strval expects bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php - - - - message: '#^Parameter \#3 \$chunk of method Utopia\\Storage\\Device\:\:upload\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php - - - - message: '#^Parameter \#4 \$chunks of method Utopia\\Storage\\Device\:\:upload\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php - - - - message: '#^Parameter \#5 \$metadata of method Utopia\\Storage\\Device\:\:upload\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Delete.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:delete\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Delete.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Download\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Download/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Download\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Download/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:exists\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Download/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:getFileSize\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Download/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:read\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Download/Get.php - - - - message: '#^Parameter \#2 \$offset of method Utopia\\Storage\\Device\:\:read\(\) expects int, int\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Download/Get.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Download/Get.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, int\<1, max\> given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Download/Get.php - - message: '#^Variable \$device might not be defined\.$#' identifier: variable.undefined @@ -24072,1254 +762,12 @@ parameters: count: 5 path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Download/Get.php - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Duplicate/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Duplicate\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Duplicate/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Duplicate\\Create\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Duplicate/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Duplicate\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Duplicate/Create.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:exists\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Duplicate/Create.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:transfer\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Duplicate/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Status\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Status/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Status\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Status/Update.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Status/Update.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Template/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Template\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Template/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Template\\Create\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Template/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Template\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Template/Create.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Template/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Vcs\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Vcs/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Vcs\\Create\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Vcs/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\Vcs\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Vcs/Create.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/Vcs/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Deployments\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/XList.php - - - - message: '#^Offset ''selections'' on array\{filters\: array\, selections\: array\, limit\: int\|null, offset\: int\|null, orderAttributes\: array\, orderTypes\: array\, cursor\: Utopia\\Database\\Document\|null, cursorDirection\: string\|null\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/XList.php - - - - message: '#^Part \$deploymentId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Deployments/XList.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Frameworks/XList.php - - - - message: '#^Cannot access offset ''adapters'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Frameworks/XList.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Frameworks/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Frameworks\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Frameworks/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Frameworks\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Frameworks/XList.php - - - - message: '#^Parameter \#1 \$array of function array_values expects array\, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Frameworks/XList.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Frameworks/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Logs\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Logs/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Logs\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Logs/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Logs\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Logs/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Logs\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Logs/Get.php - - - - message: '#^Parameter \#1 \$datetime of function strtotime expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Logs/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Logs\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Logs/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Logs\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Logs/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Logs\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Logs/XList.php - - - - message: '#^Parameter \#1 \$datetime of function strtotime expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Logs/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Logs/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Logs/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Logs/XList.php - - - - message: '#^Part \$logId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Logs/XList.php - - - - message: '#^Part \$timeout \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Logs/XList.php - - - - message: '#^Cannot access offset ''adapters'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Create.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Sites\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Sites\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Create.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Create.php - - - - message: '#^Parameter \#1 \$teamId of method Appwrite\\Platform\\Modules\\Compute\\Base\:\:getPermissions\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Create.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Create.php - - - - message: '#^Parameter \#2 \$specifications of class Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification constructor expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Create.php - - - - message: '#^Parameter \#3 \$maxCpus of class Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification constructor expects float, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Create.php - - - - message: '#^Parameter \#4 \$maxMemory of class Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification constructor expects int, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Sites\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Sites\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Sites\\Deployment\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Deployment/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Sites\\Deployment\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Deployment/Update.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Deployment/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Sites\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Sites\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Get.php - - - - message: '#^Cannot access offset ''adapters'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Update.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Update.php - - - - message: '#^If condition is always false\.$#' - identifier: if.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Sites\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Sites\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Update.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Update.php - - - - message: '#^Parameter \#1 \$teamId of method Appwrite\\Platform\\Modules\\Compute\\Base\:\:getPermissions\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Update.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Update.php - - - - message: '#^Parameter \#2 \$deploymentId of method Executor\\Executor\:\:deleteRuntime\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Update.php - - - - message: '#^Parameter \#2 \$specifications of class Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification constructor expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Update.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Update.php - - - - message: '#^Parameter \#3 \$maxCpus of class Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification constructor expects float, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Update.php - - - - message: '#^Parameter \#4 \$maxMemory of class Appwrite\\Platform\\Modules\\Compute\\Validator\\Specification constructor expects int, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Update.php - - message: '#^Variable \$enabled on left side of \?\?\= always exists and is not nullable\.$#' identifier: nullCoalesce.variable count: 1 path: src/Appwrite/Platform/Modules/Sites/Http/Sites/Update.php - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Sites\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Sites\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Sites\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/XList.php - - - - message: '#^Part \$siteId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Sites/XList.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Specifications/XList.php - - - - message: '#^Cannot access offset ''cpus'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Specifications/XList.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Specifications/XList.php - - - - message: '#^Cannot access offset ''memory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Specifications/XList.php - - - - message: '#^Cannot access offset ''slug'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Specifications/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Specifications\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Specifications/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Specifications\\XList\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Specifications/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Specifications\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Specifications/XList.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Specifications/XList.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Specifications/XList.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Templates\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Templates\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/Get.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/Get.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/Get.php - - - - message: '#^Cannot access offset ''frameworks'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/XList.php - - - - message: '#^Cannot access offset ''score'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/XList.php - - - - message: '#^Cannot access offset ''useCases'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Templates\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Templates\\XList\:\:action\(\) has parameter \$frameworks with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Templates\\XList\:\:action\(\) has parameter \$usecases with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Templates\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/XList.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/XList.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/XList.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/XList.php - - - - message: '#^Parameter \#1 \$array of function array_slice expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/XList.php - - - - message: '#^Parameter \#1 \$array of function usort expects TArray of array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/XList.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/XList.php - - - - message: '#^Parameter \#2 \.\.\.\$arrays of function array_intersect expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Templates/XList.php - - - - message: '#^Binary operation "\*" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/Get.php - - - - message: '#^Binary operation "\+\=" between \(float\|int\) and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/Get.php - - - - message: '#^Binary operation "/" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/Get.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/Get.php - - - - message: '#^Cannot access offset ''factor'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/Get.php - - - - message: '#^Cannot access offset ''limit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/Get.php - - - - message: '#^Cannot access offset ''period'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/Get.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/Get.php - - - - message: '#^Match expression does not handle remaining value\: mixed$#' - identifier: match.unhandled - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Usage\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Usage\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/Get.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:limit\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/Get.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 14 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/Get.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/Get.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/Get.php - - - - message: '#^Binary operation "\*" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/XList.php - - - - message: '#^Binary operation "\+\=" between \(float\|int\) and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/XList.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/XList.php - - - - message: '#^Cannot access offset ''factor'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/XList.php - - - - message: '#^Cannot access offset ''limit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/XList.php - - - - message: '#^Cannot access offset ''period'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/XList.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/XList.php - - - - message: '#^Match expression does not handle remaining value\: mixed$#' - identifier: match.unhandled - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Usage\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Usage\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/XList.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:limit\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/XList.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Usage/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Variables\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Variables\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/Create.php - - - - message: '#^Parameter \#1 \$teamId of method Appwrite\\Platform\\Modules\\Compute\\Base\:\:getPermissions\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Variables\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Variables\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/Delete.php - - - - message: '#^Right side of \|\| is always false\.$#' - identifier: booleanOr.rightAlwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/Delete.php - - - - message: '#^Strict comparison using \=\=\= between Utopia\\Database\\Document and false will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Variables\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Variables\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/Get.php - - - - message: '#^Right side of \|\| is always false\.$#' - identifier: booleanOr.rightAlwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/Get.php - - - - message: '#^Strict comparison using \=\=\= between Utopia\\Database\\Document and false will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 2 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Variables\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Variables\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/Update.php - - - - message: '#^Strict comparison using \=\=\= between Utopia\\Database\\Document and false will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Variables\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Sites\\Http\\Variables\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/XList.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Sites/Http/Variables/XList.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Platform\\Service\:\:addAction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 29 - path: src/Appwrite/Platform/Modules/Sites/Services/Http.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Binary operation "\*" between mixed and 1000 results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Cannot access offset ''attributes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Cannot access offset ''buckets'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Cannot access offset ''files'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Cannot access offset ''filters'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Cannot access offset ''format'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Cannot access offset ''lengths'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Cannot access offset ''orders'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Cannot access offset ''signed'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Create\:\:action\(\) has parameter \$allowedFileExtensions with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Create\:\:action\(\) has parameter \$permissions with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Parameter \#1 \$bytes of static method Utopia\\Storage\\Storage\:\:human\(\) expects int, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Parameter \#1 \$permissions of static method Utopia\\Database\\Helpers\\Permission\:\:aggregate\(\) expects array\\|null, array\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Delete.php - - - - message: '#^Instanceof between Utopia\\Database\\Document and Utopia\\Database\\Document will always evaluate to true\.$#' - identifier: instanceof.alwaysTrue - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Create\:\:action\(\) has parameter \$permissions with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Negated boolean expression is always false\.$#' - identifier: booleanNot.alwaysFalse - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#1 \$allowed of class Utopia\\Storage\\Validator\\FileExt constructor expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#1 \$host of class Appwrite\\ClamAV\\Network constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Http\\Adapter\\Swoole\\Request\:\:getFiles\(\) expects string, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#1 \$max of class Utopia\\Storage\\Validator\\FileSize constructor expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#1 \$path of function pathinfo expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:getFileMimeType\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:getFileSize\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#1 \$permissions of static method Utopia\\Database\\Helpers\\Permission\:\:aggregate\(\) expects array\\|null, array\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#1 \$source of method Utopia\\Storage\\Device\:\:upload\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#1 \$string of function bin2hex expects string, null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#1 \$string of function bin2hex expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#3 \$chunk of method Utopia\\Storage\\Device\:\:upload\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#4 \$chunks of method Utopia\\Storage\\Device\:\:upload\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#5 \$iv of static method Appwrite\\OpenSSL\\OpenSSL\:\:encrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - - message: '#^Parameter \#5 \$metadata of method Utopia\\Storage\\Device\:\:upload\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - message: '#^Variable \$iv might not be defined\.$#' identifier: variable.undefined @@ -25332,708 +780,6 @@ parameters: count: 1 path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Create.php - - - message: '#^Cannot access offset ''uploadId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Delete.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:abort\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Delete.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:delete\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Delete.php - - - - message: '#^Parameter \#2 \$extra of method Utopia\\Storage\\Device\:\:abort\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Delete.php - - - - message: '#^Binary operation "\-" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Binary operation "\-" between mixed and int\<0, max\> results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Binary operation "\." between ''File not found in '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Binary operation "\." between ''_APP_OPENSSL_KEY_V'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Binary operation "\." between ''attachment;…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Binary operation "/" between mixed and 10485760 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Download\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Download\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:exists\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:read\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Parameter \#1 \$string of function hex2bin expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Parameter \#1 \$type of method Utopia\\Http\\Response\:\:setContentType\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Parameter \#2 \$offset of function substr expects int, int\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Parameter \#2 \$offset of method Utopia\\Storage\\Device\:\:read\(\) expects int, int\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, \(float\|int\) given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, int\<1, max\> given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Parameter \#5 \$iv of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Parameter \#6 \$tag of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Download/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Get.php - - - - message: '#^Binary operation "\." between ''_APP_OPENSSL_KEY_V'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Binary operation "\." between ''bucket_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Cannot access offset ''default_image'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Cannot access offset ''jpg'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Preview\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Preview\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#1 \$body of method Appwrite\\Utopia\\Response\:\:file\(\) expects string, string\|false\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, int\|string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#1 \$path of function pathinfo expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:exists\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:read\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#1 \$string of function hex2bin expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#1 \$type of method Utopia\\Http\\Response\:\:setContentType\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#1 \$type of method Utopia\\Image\\Image\:\:output\(\) expects string, int\|string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#2 \$haystack of function array_search expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#5 \$iv of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Parameter \#6 \$tag of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Strict comparison using \=\=\= between 0\.0 and 0 will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Preview/Get.php - - - - message: '#^Binary operation "\-" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Binary operation "\." between ''File not found in '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Binary operation "\." between ''_APP_OPENSSL_KEY_V'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Binary operation "\." between mixed and ''; filename\="'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Push\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Push\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Parameter \#1 \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:exists\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:getFileSize\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:read\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Parameter \#1 \$string of function hex2bin expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Parameter \#1 \$type of method Utopia\\Http\\Response\:\:setContentType\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Parameter \#2 \$offset of function substr expects int, int\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Parameter \#2 \$offset of method Utopia\\Storage\\Device\:\:read\(\) expects int, int\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, \(float\|int\) given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, int\<1, max\> given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Parameter \#5 \$iv of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Parameter \#6 \$tag of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Part \$size \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Push/Get.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Update\:\:action\(\) has parameter \$permissions with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Update.php - - - - message: '#^Parameter \#1 \$permissions of static method Utopia\\Database\\Helpers\\Permission\:\:aggregate\(\) expects array\\|null, array\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/Update.php - - - - message: '#^Binary operation "\-" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Binary operation "\." between ''File not found in '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Binary operation "\." between ''_APP_OPENSSL_KEY_V'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Binary operation "\." between ''inline; filename\="'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\View\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\View\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:exists\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:getFileSize\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:read\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Parameter \#1 \$string of function hex2bin expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Parameter \#1 \$type of method Utopia\\Http\\Response\:\:setContentType\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Parameter \#2 \$offset of function substr expects int, int\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Parameter \#2 \$offset of method Utopia\\Storage\\Device\:\:read\(\) expects int, int\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, \(float\|int\) given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, int\<1, max\> given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Parameter \#5 \$iv of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Parameter \#6 \$tag of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Part \$size \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/View/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Files\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/XList.php - - - - message: '#^Part \$fileId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Files/XList.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Get.php - - - - message: '#^Cannot call method getDocument\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Get.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Get.php - - - - message: '#^Binary operation "\*" between mixed and 1000 results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Update\:\:action\(\) has parameter \$allowedFileExtensions with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Update\:\:action\(\) has parameter \$permissions with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Update.php - - - - message: '#^Parameter \#1 \$bytes of static method Utopia\\Storage\\Storage\:\:human\(\) expects int, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Update.php - - - - message: '#^Parameter \#1 \$permissions of static method Utopia\\Database\\Helpers\\Permission\:\:aggregate\(\) expects array\\|null, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Update.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Update.php - - - - message: '#^Parameter \#2 \$permissions of method Utopia\\Database\\Database\:\:updateCollection\(\) expects array\, array\\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Update.php - - message: '#^Variable \$allowedFileExtensions on left side of \?\?\= always exists and is not nullable\.$#' identifier: nullCoalesce.variable @@ -26058,630 +804,12 @@ parameters: count: 1 path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/Update.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/XList.php - - - - message: '#^Cannot call method find\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/XList.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/XList.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/XList.php - - - - message: '#^If condition is always true\.$#' - identifier: if.alwaysTrue - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Buckets\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/XList.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/XList.php - - - - message: '#^Part \$bucketId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/XList.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Buckets/XList.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Binary operation "\*" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Binary operation "\+\=" between \(float\|int\) and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Cannot access offset ''factor'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Cannot access offset ''limit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Cannot access offset ''period'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Cannot call method find\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Cannot call method findOne\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Match expression does not handle remaining value\: mixed$#' - identifier: match.unhandled - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Usage\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Usage\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:limit\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/Get.php - - - - message: '#^Binary operation "\*" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/XList.php - - - - message: '#^Binary operation "\+\=" between \(float\|int\) and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/XList.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/XList.php - - - - message: '#^Cannot access offset ''factor'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/XList.php - - - - message: '#^Cannot access offset ''limit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/XList.php - - - - message: '#^Cannot access offset ''period'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/XList.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/XList.php - - - - message: '#^Match expression does not handle remaining value\: mixed$#' - identifier: match.unhandled - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Usage\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Storage\\Http\\Usage\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/XList.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:limit\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/XList.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Modules/Storage/Http/Usage/XList.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Platform\\Service\:\:addAction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 16 - path: src/Appwrite/Platform/Modules/Storage/Services/Http.php - - - - message: '#^Cannot access offset ''country'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Modules/Teams/Http/Logs/XList.php - - - - message: '#^Cannot access offset ''iso_code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Modules/Teams/Http/Logs/XList.php - - - - message: '#^Cannot access offset ''mode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Logs/XList.php - - - - message: '#^Cannot access offset ''userEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Logs/XList.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Logs/XList.php - - - - message: '#^Cannot access offset ''userName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Logs/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Logs\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Logs/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Logs\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Logs/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Logs\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Logs/XList.php - - - - message: '#^Parameter \#1 \$ipAddress of method MaxMind\\Db\\Reader\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Logs/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Logs/XList.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/Teams/Http/Logs/XList.php - - - - message: '#^Parameter \#1 \$userAgent of class Appwrite\\Detector\\Detector constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Logs/XList.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Logs/XList.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\Locale\\Locale\:\:getText\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Logs/XList.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Cannot access offset ''host'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Cannot access offset ''limit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Cannot access offset ''password'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Cannot access offset ''port'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Cannot access offset ''query'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Cannot access offset ''replyTo'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Cannot access offset ''secure'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Cannot access offset ''senderEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Cannot access offset ''senderName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Cannot access offset ''subject'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Cannot access offset ''username'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Cannot call method render\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Cannot call method setParam\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - message: '#^Caught class Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\Throwable not found\.$#' identifier: class.notFound count: 1 path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\Create\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\Create\:\:action\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$body of method Appwrite\\Event\\Mail\:\:setBody\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$email of class Utopia\\Emails\\Email constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$host of method Appwrite\\Event\\Mail\:\:setSmtpHost\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$name of method Appwrite\\Event\\Mail\:\:setName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$numberToParse of method libphonenumber\\PhoneNumberUtil\:\:parse\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$password of method Appwrite\\Event\\Mail\:\:setSmtpPassword\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$port of method Appwrite\\Event\\Mail\:\:setSmtpPort\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$preview of method Appwrite\\Event\\Mail\:\:setPreview\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$recipient of method Appwrite\\Event\\Mail\:\:setRecipient\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$recipients of method Appwrite\\Event\\Messaging\:\:setRecipients\(\) expects array\, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$replyTo of method Appwrite\\Event\\Mail\:\:setSmtpReplyTo\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$secure of method Appwrite\\Event\\Mail\:\:setSmtpSecure\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$senderEmail of method Appwrite\\Event\\Mail\:\:setSmtpSenderEmail\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$senderName of method Appwrite\\Event\\Mail\:\:setSmtpSenderName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$subject of method Appwrite\\Event\\Mail\:\:setSubject\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$url of static method Appwrite\\Template\\Template\:\:unParseURL\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#1 \$username of method Appwrite\\Event\\Mail\:\:setSmtpUsername\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, int\\|int\<1, max\> given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Result of && is always false\.$#' - identifier: booleanAnd.alwaysFalse - count: 2 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - - message: '#^Strict comparison using \!\=\= between mixed and \*NEVER\* will always evaluate to true\.$#' - identifier: notIdentical.alwaysTrue - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - message: '#^Variable \$email in empty\(\) always exists and is always falsy\.$#' identifier: empty.variable @@ -26700,918 +828,6 @@ parameters: count: 14 path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Delete.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Delete.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Delete.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Delete.php - - - - message: '#^Cannot access offset ''membershipsMfa'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Get.php - - - - message: '#^Cannot access offset ''membershipsUserEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Get.php - - - - message: '#^Cannot access offset ''membershipsUserName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Get.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Get.php - - - - message: '#^Binary operation "\." between ''Invite does not…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Cannot access offset ''country'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Cannot access offset ''iso_code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\Status\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\Status\\Update\:\:action\(\) has parameter \$project with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\Status\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Parameter \#2 \$hash of method Utopia\\Auth\\Proof\:\:verify\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Parameter \#2 \$seconds of static method Utopia\\Database\\DateTime\:\:addSeconds\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Http\\Response\:\:addHeader\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Parameter \$domain of method Utopia\\Http\\Response\:\:addCookie\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Parameter \$name of method Utopia\\Http\\Response\:\:addCookie\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Parameter \$sameSite of method Utopia\\Http\\Response\:\:addCookie\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Status/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\Update\:\:action\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Update.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Update.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/Update.php - - - - message: '#^Cannot access offset ''membershipsMfa'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/XList.php - - - - message: '#^Cannot access offset ''membershipsUserEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/XList.php - - - - message: '#^Cannot access offset ''membershipsUserName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Memberships\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/XList.php - - - - message: '#^Part \$membershipId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Memberships/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Preferences\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Preferences/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Preferences\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Preferences/Get.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Preferences/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Preferences\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Preferences/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Preferences\\Update\:\:action\(\) has parameter \$prefs with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Preferences/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Preferences\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Preferences/Update.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Preferences/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Teams\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Teams/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Teams\\Create\:\:action\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Teams/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Teams\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Teams/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Teams\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Teams/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Teams\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Teams/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Teams\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Teams/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Teams\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Teams/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Teams\\Name\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Teams/Name/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Teams\\Name\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Teams/Name/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Teams\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Teams/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Teams\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Teams/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Teams\\Http\\Teams\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Teams/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Teams/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Teams/XList.php - - - - message: '#^Part \$teamId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Teams/Http/Teams/XList.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Platform\\Service\:\:addAction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 14 - path: src/Appwrite/Platform/Modules/Teams/Services/Http.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Tokens\\Http\\Tokens\\Buckets\\Files\\Action\:\:getFileAndBucket\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Buckets/Files/Action.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Tokens\\Http\\Tokens\\Buckets\\Files\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Buckets/Files/Create.php - - - - message: '#^Binary operation "\." between mixed and ''\:'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Buckets/Files/XList.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Buckets/Files/XList.php - - - - message: '#^Cannot call method getSequence\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Buckets/Files/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Tokens\\Http\\Tokens\\Buckets\\Files\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Buckets/Files/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Tokens\\Http\\Tokens\\Buckets\\Files\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Buckets/Files/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Tokens\\Http\\Tokens\\Buckets\\Files\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Buckets/Files/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Buckets/Files/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Buckets/Files/XList.php - - - - message: '#^Part \$tokenId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Buckets/Files/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Tokens\\Http\\Tokens\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Tokens\\Http\\Tokens\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Tokens\\Http\\Tokens\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Tokens\\Http\\Tokens\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Tokens\\Http\\Tokens\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\Tokens\\Http\\Tokens\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Update.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Platform\\Service\:\:addAction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Platform/Modules/Tokens/Services/Http.php - - - - message: '#^Binary operation "\." between ''Error creating vcs…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Binary operation "\." between ''http\://''\|''https\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Cannot access offset ''html_url'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Cannot access offset ''label'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Cannot access offset ''login'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Cannot access offset ''owner'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Cannot access offset ''repo'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Cannot access offset ''sha'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Cannot call method createDocument\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 30 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Cannot call method getCollection\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Cannot call method getCreatedAt\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Cannot call method getDocument\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 8 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Cannot call method getSequence\(\) on mixed\.$#' - identifier: method.nonObject - count: 6 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Cannot call method setAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 4 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Cannot call method updateDocument\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 5 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\External\\Update\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\External\\Update\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\External\\Update\:\:createGitDeployments\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\External\\Update\:\:createGitDeployments\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\External\\Update\:\:createGitDeployments\(\) has parameter \$repositories with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\External\\Update\:\:getBuildQueueName\(\) should return string but returns string\|null\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\External\\Update\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#1 \$deployment of method Appwrite\\Event\\Build\:\:setDeployment\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#1 \$dsn of class Utopia\\DSN\\DSN constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getOwnerName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#1 \$owner of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getCommit\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#1 \$repositoryId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getRepositoryName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#1 \$resource of method Appwrite\\Event\\Build\:\:setResource\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#1 \$string of function md5 expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#1 \$value of function strval expects bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#1 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#10 \$providerCommitAuthor of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\External\\Update\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#11 \$providerCommitAuthorUrl of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\External\\Update\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#12 \$providerCommitMessage of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\External\\Update\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#13 \$providerCommitUrl of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\External\\Update\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:deleteDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#2 \$privateKey of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#2 \$providerInstallationId of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\External\\Update\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#2 \$resource of method Appwrite\\Vcs\\Comment\:\:addBuild\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#2 \$value of static method Utopia\\Span\\Span\:\:add\(\) expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#3 \$commentId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getComment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#3 \$commentId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:updateComment\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#3 \$commitHash of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getCommit\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#3 \$pullRequestNumber of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:createComment\(\) expects int, string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#3 \$pullRequestNumber of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getPullRequest\(\) expects int, string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#7 \$providerRepositoryUrl of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\External\\Update\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#8 \$providerRepositoryOwner of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\External\\Update\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Parameter \#9 \$providerCommitHash of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\External\\Update\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Part \$databaseName \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Part \$installationId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Part \$projectId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Part \$projectName \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Part \$providerRepositoryUrl \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Part \$region \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Part \$repositoryId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Part \$resourceId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Part \$resourceName \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - - message: '#^Part \$sitesDomain \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - message: '#^Variable \$logBase might not be defined\.$#' identifier: variable.undefined @@ -27636,150 +852,6 @@ parameters: count: 1 path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/External/Update.php - - - message: '#^Binary operation "\." between ''http\://''\|''https\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\Get\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Authorize\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Authorize/Get.php - - - - message: '#^Binary operation "\." between ''http\://''\|''https\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Binary operation "\." between mixed and ''&''\|''\:'' results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Cannot access offset ''projectId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 4 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Callback\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Callback\\Get\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Callback\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Callback\\Get\:\:getPermissions\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Parameter \#1 \$appId of class Appwrite\\Auth\\OAuth2\\Github constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Parameter \#1 \$haystack of function str_contains expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Parameter \#1 \$teamId of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Callback\\Get\:\:getPermissions\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Parameter \#1 \$url of method Utopia\\Http\\Response\:\:redirect\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Parameter \#2 \$appSecret of class Appwrite\\Auth\\OAuth2\\Github constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Parameter \#2 \$privateKey of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Parameter \#2 \$projectId of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Callback\\Get\:\:getPermissions\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Parameter \#2 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Part \$projectId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - - message: '#^Part \$region \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - message: '#^Result of method Utopia\\Http\\Response\:\:redirect\(\) \(void\) is used\.$#' identifier: method.void @@ -27798,474 +870,6 @@ parameters: count: 1 path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Callback/Get.php - - - message: '#^Binary operation "\." between ''Error creating vcs…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Binary operation "\." between ''http\://''\|''https\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Cannot call method createDocument\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 30 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Cannot call method getCollection\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Cannot call method getCreatedAt\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Cannot call method getDocument\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 8 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Cannot call method getSequence\(\) on mixed\.$#' - identifier: method.nonObject - count: 6 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Cannot call method setAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 4 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Cannot call method updateDocument\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 4 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:action\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) has parameter \$repositories with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:getBuildQueueName\(\) should return string but returns string\|null\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:handleInstallationEvent\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:handleInstallationEvent\(\) has parameter \$parsedPayload with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:handlePullRequestEvent\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:handlePullRequestEvent\(\) has parameter \$parsedPayload with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:handlePullRequestEvent\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:handlePushEvent\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:handlePushEvent\(\) has parameter \$parsedPayload with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:handlePushEvent\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:preprocessEvent\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#1 \$array of function array_diff expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#1 \$deployment of method Appwrite\\Event\\Build\:\:setDeployment\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#1 \$dsn of class Utopia\\DSN\\DSN constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#1 \$owner of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getCommit\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#1 \$repositoryId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getRepositoryName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#1 \$resource of method Appwrite\\Event\\Build\:\:setResource\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#1 \$string of function md5 expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#1 \$value of function strval expects bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#10 \$providerCommitAuthor of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#11 \$providerCommitAuthorUrl of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#12 \$providerCommitMessage of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#13 \$providerCommitUrl of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#14 \$providerPullRequestId of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#15 \$external of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#2 \$githubAppId of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:handlePushEvent\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:deleteDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#2 \$privateKey of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:handlePullRequestEvent\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#2 \$providerInstallationId of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#2 \$repositoryName of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getCommit\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#2 \$resource of method Appwrite\\Vcs\\Comment\:\:addBuild\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#2 \$value of static method Utopia\\Span\\Span\:\:add\(\) expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 11 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#3 \$commentId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getComment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#3 \$commentId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:updateComment\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#3 \$commitHash of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getCommit\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#3 \$githubAppId of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:handlePullRequestEvent\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#3 \$privateKey of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:handlePushEvent\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#3 \$pullRequestNumber of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:createComment\(\) expects int, string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#3 \$signatureKey of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:validateWebhookEvent\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#4 \$providerBranch of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#5 \$providerBranchUrl of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#6 \$providerRepositoryName of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#7 \$providerRepositoryUrl of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#8 \$providerRepositoryOwner of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Parameter \#9 \$providerCommitHash of method Appwrite\\Platform\\Modules\\VCS\\Http\\GitHub\\Events\\Create\:\:createGitDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Part \$databaseName \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Part \$installationId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Part \$projectId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Part \$projectName \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Part \$region \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Part \$repositoryId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Part \$resourceId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Part \$resourceName \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - - - message: '#^Part \$sitesDomain \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - message: '#^Result of method Appwrite\\Utopia\\Response\:\:json\(\) \(void\) is used\.$#' identifier: method.void @@ -28297,2765 +901,35 @@ parameters: path: src/Appwrite/Platform/Modules/VCS/Http/GitHub/Events/Create.php - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Delete\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Delete\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Delete.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Get.php - - - - message: '#^Strict comparison using \=\=\= between Utopia\\Database\\Document and false will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Get.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Branches/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Repositories\\Branches\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Branches/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Repositories\\Branches\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Branches/XList.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getOwnerName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Branches/XList.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Branches/XList.php - - - - message: '#^Parameter \#2 \$privateKey of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Branches/XList.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Contents/Get.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Contents/Get.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Contents/Get.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Contents/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Repositories\\Contents\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Contents/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Repositories\\Contents\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Contents/Get.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getOwnerName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Contents/Get.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Contents/Get.php - - - - message: '#^Parameter \#2 \$privateKey of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Contents/Get.php - - - - message: '#^Binary operation "\." between '' '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Binary operation "\." between ''Provider Error\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Binary operation "\.\=" between mixed and non\-falsy\-string results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Repositories\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Repositories\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Parameter \#1 \$accessToken of method Appwrite\\Auth\\OAuth2\\Github\:\:createRepository\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Parameter \#1 \$appId of class Appwrite\\Auth\\OAuth2\\Github constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getOwnerName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Parameter \#1 \$refreshToken of method Appwrite\\Auth\\OAuth2\\Github\:\:refreshTokens\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Parameter \#1 \$value of function strval expects bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Parameter \#2 \$appSecret of class Appwrite\\Auth\\OAuth2\\Github constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Parameter \#2 \$privateKey of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Create.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Detections/Create.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Detections/Create.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Detections/Create.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Detections/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Repositories\\Detections\\Create\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Detections/Create.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Repositories\\Detections\\Create\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Detections/Create.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Detections/Create.php - - - - message: '#^Parameter \#1 \$content of method Utopia\\Detector\\Detector\:\:addInput\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Detections/Create.php - - - - message: '#^Parameter \#1 \$content of method Utopia\\Detector\\Detector\\Framework\:\:addInput\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Detections/Create.php - - - - message: '#^Parameter \#1 \$contents of method Utopia\\Config\\Adapters\\Dotenv\:\:parse\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Detections/Create.php - - - - message: '#^Parameter \#1 \$haystack of function str_starts_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Detections/Create.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getOwnerName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Detections/Create.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Detections/Create.php - - - - message: '#^Parameter \#2 \$privateKey of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Detections/Create.php - - - - message: '#^Call to an undefined method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getInstallationRepository\(\)\.$#' - identifier: method.notFound - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Get.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Repositories\\Get\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Get.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Repositories\\Get\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Get.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Get.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getOwnerName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Get.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Get.php - - - - message: '#^Parameter \#1 \$value of function strval expects bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Get.php - - - - message: '#^Parameter \#2 \$privateKey of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/Get.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Binary operation "%%" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Binary operation "/" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Cannot access offset ''authorized'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Cannot access offset ''framework'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Cannot access offset ''id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Cannot access offset ''organization'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Cannot access offset ''provider'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Cannot access offset ''providerInstallationId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Cannot access offset ''pushedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Cannot access offset ''pushed_at'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Cannot access offset ''runtime'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Cannot access offset ''variables'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Repositories\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Repositories\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\Repositories\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#1 \$content of method Utopia\\Detector\\Detector\:\:addInput\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#1 \$content of method Utopia\\Detector\\Detector\\Framework\:\:addInput\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#1 \$contents of method Utopia\\Config\\Adapters\\Dotenv\:\:parse\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#1 \$haystack of function str_starts_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getOwnerName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#1 \$installationId of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:searchRepositories\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#1 \$owner of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getRepositoryContent\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#1 \$owner of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:listRepositoryContents\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#1 \$owner of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:listRepositoryLanguages\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#1 \$value of function strval expects bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#2 \$privateKey of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#2 \$repositoryName of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getRepositoryContent\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#2 \$repositoryName of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:listRepositoryContents\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#2 \$repositoryName of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:listRepositoryLanguages\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#3 \$path of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:getRepositoryContent\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Parameter \#4 \$per_page of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:searchRepositories\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/Repositories/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\XList\:\:action\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\XList\:\:action\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/XList.php - - - - message: '#^Method Appwrite\\Platform\\Modules\\VCS\\Http\\Installations\\XList\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/XList.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/XList.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/XList.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/XList.php - - - - message: '#^Part \$installationId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Modules/VCS/Http/Installations/XList.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Platform\\Service\:\:addAction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 13 - path: src/Appwrite/Platform/Modules/VCS/Services/Http.php - - - - message: '#^Parameter \#1 \$key of method Utopia\\Platform\\Service\:\:addAction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Services/Tasks.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Binary operation "\." between ''A new version \('' and mixed results in an error\.$#' - identifier: binaryOp.invalid + message: '#^Variable \$providerConfig on left side of \?\? always exists and is not nullable\.$#' + identifier: nullCoalesce.variable count: 1 path: src/Appwrite/Platform/Tasks/Doctor.php - - message: '#^Call to an undefined method Appwrite\\PubSub\\Adapter\\Pool\|Utopia\\Cache\\Adapter\\Pool\|Utopia\\Queue\\Broker\\Pool\:\:ping\(\)\.$#' - identifier: method.notFound - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Cannot access offset ''version'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Cannot access property \$AltBody on mixed\.$#' - identifier: property.nonObject - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Cannot access property \$Body on mixed\.$#' - identifier: property.nonObject - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Cannot access property \$Subject on mixed\.$#' - identifier: property.nonObject - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Cannot call method addAddress\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Cannot call method send\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Parameter \#1 \$bytes of static method Utopia\\Storage\\Storage\:\:human\(\) expects int, float given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Parameter \#1 \$domain of class Utopia\\Domains\\Domain constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Parameter \#1 \$host of class Appwrite\\ClamAV\\Network constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Pools\\Group\:\:get\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Cache\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, Utopia\\Pools\\Pool\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Parameter \#1 \$pool of class Utopia\\Database\\Adapter\\Pool constructor expects Utopia\\Pools\\Pool\, Utopia\\Pools\\Pool\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Parameter \#1 \$version1 of function version_compare expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Parameter \#2 \$version2 of function version_compare expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Part \$database \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 3 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Part \$pool \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 3 - path: src/Appwrite/Platform/Tasks/Doctor.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Binary operation "\." between mixed and '' \(default\: \\'''' results in an error\.$#' - identifier: binaryOp.invalid + message: '#^Variable \$compose in isset\(\) always exists and is not nullable\.$#' + identifier: isset.variable count: 1 path: src/Appwrite/Platform/Tasks/Install.php - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Cannot access offset ''filter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Cannot access offset ''overwrite'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Cannot access offset ''question'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Cannot access offset ''variables'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Negated boolean expression is always false\.$#' - identifier: booleanNot.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Parameter \#1 \$arg of function escapeshellarg expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Part \$existingDatabase \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Part \$input\[\$var\[''name''\]\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 10 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Strict comparison using \!\=\= between Appwrite\\Docker\\Compose\\Service and null will always evaluate to true\.$#' - identifier: notIdentical.alwaysTrue - count: 1 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Using nullsafe method call on non\-nullable type Appwrite\\Docker\\Compose\\Service\. Use \-\> instead\.$#' - identifier: nullsafe.neverNull - count: 1 - path: src/Appwrite/Platform/Tasks/Install.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Cannot access offset ''callback'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Cannot access offset ''interval'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Cannot call method find\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Cannot call method updateDocument\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\Interval\:\:cleanupStaleExecutions\(\) is unused\.$#' - identifier: method.unused - count: 1 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\Interval\:\:getTasks\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\Interval\:\:runTasks\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Parameter \#1 \$ms of static method Swoole\\Timer\:\:tick\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Parameter \#1 \$timer_id of static method Swoole\\Timer\:\:clear\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Part \$taskName \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Trying to invoke mixed but it''s not a callable\.$#' - identifier: callable.nonCallable - count: 1 - path: src/Appwrite/Platform/Tasks/Interval.php - - - - message: '#^Binary operation "\*" between \-1 and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Tasks/Maintenance.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\Maintenance\:\:notifyDeleteCache\(\) has parameter \$interval with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Platform/Tasks/Maintenance.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\Maintenance\:\:notifyDeleteSchedules\(\) has parameter \$interval with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Platform/Tasks/Maintenance.php - - - - message: '#^Parameter \#1 \$string of function md5 expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Maintenance.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Maintenance.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Maintenance.php - - - - message: '#^Parameter \#1 \$pdo of method Appwrite\\Migration\\Migration\:\:setPDO\(\) expects Utopia\\Database\\PDO, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Tasks/Migrate.php - - - - message: '#^Parameter \#1 \$project of method Appwrite\\Migration\\Migration\:\:setProject\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Migrate.php - - - - message: '#^Parameter \#1 of callable callable\(Utopia\\Database\\Document\)\: Utopia\\Database\\Database expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Migrate.php - - - - message: '#^Cannot cast mixed to int\.$#' - identifier: cast.int - count: 1 - path: src/Appwrite/Platform/Tasks/QueueRetry.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 3 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Binary operation "\." between ''\*\*This SDK is…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Binary operation "\." between ''/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Binary operation "\." between ''Fetching API Spec…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Binary operation "\." between ''Language "'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Binary operation "\." between literal\-string&non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Binary operation "\." between mixed and '' for '' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Binary operation "\." between mixed and ''/'' results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 12 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''changelog'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''composerPackage'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''composerVendor'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''description'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''exclude'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''family'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''gettingStarted'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''gitBranch'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''gitRepoName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''gitUrl'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''gitUserName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 19 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''namespace'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''repoBranch'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''sdks'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''shortDescription'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''url'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''version'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Cannot access offset ''versionBump'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\SDKs\:\:copyExamples\(\) has parameter \$language with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\SDKs\:\:createPullRequest\(\) has parameter \$language with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\SDKs\:\:createPullRequest\(\) has parameter \$prUrls with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\SDKs\:\:generateVersionAndChangelog\(\) has parameter \$language with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\SDKs\:\:generateVersionAndChangelog\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\SDKs\:\:getPlatforms\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\SDKs\:\:getSupportedSDKs\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\SDKs\:\:pushToGit\(\) has parameter \$language with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\SDKs\:\:updateExistingPr\(\) has parameter \$prUrls with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$arg of function escapeshellarg expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$changelog of method Appwrite\\Platform\\Tasks\\SDKs\:\:extractReleaseNotes\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$changelogPath of method Appwrite\\Platform\\Tasks\\SDKs\:\:updateChangelogFile\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$filename of function file_get_contents expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$haystack of function strpos expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$input of class Appwrite\\Spec\\Swagger2 constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$language of method Appwrite\\Platform\\Tasks\\SDKs\:\:copyExamples\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$language of method Appwrite\\Platform\\Tasks\\SDKs\:\:createPullRequest\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$language of method Appwrite\\Platform\\Tasks\\SDKs\:\:generateVersionAndChangelog\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$language of method Appwrite\\Platform\\Tasks\\SDKs\:\:pushToGit\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$logo of method Appwrite\\SDK\\Language\\CLI\:\:setLogo\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$message of method Appwrite\\SDK\\SDK\:\:setGettingStarted\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$name of method Appwrite\\SDK\\Language\\PHP\:\:setComposerPackage\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$name of method Appwrite\\SDK\\Language\\PHP\:\:setComposerVendor\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$name of method Appwrite\\SDK\\SDK\:\:setGitRepoName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$name of method Appwrite\\SDK\\SDK\:\:setGitUserName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$name of method Appwrite\\SDK\\SDK\:\:setName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$namespace of method Appwrite\\SDK\\SDK\:\:setNamespace\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$platform of method Appwrite\\Platform\\Tasks\\SDKs\:\:updateSdkVersion\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$platform of method Appwrite\\SDK\\SDK\:\:setPlatform\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$rules of method Appwrite\\SDK\\SDK\:\:setExclude\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$string of function trim expects string, string\|false given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$test of method Appwrite\\SDK\\SDK\:\:setTest\(\) expects string, false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$text of method Appwrite\\SDK\\SDK\:\:setChangelog\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$text of method Appwrite\\SDK\\SDK\:\:setDescription\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$text of method Appwrite\\SDK\\SDK\:\:setExamples\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$text of method Appwrite\\SDK\\SDK\:\:setReadme\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$text of method Appwrite\\SDK\\SDK\:\:setShortDescription\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$url of method Appwrite\\SDK\\SDK\:\:setGitRepo\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$url of method Appwrite\\SDK\\SDK\:\:setGitURL\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$url of static method Utopia\\Agents\\DiffCheck\\Repository\:\:remote\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$version of method Appwrite\\SDK\\SDK\:\:setVersion\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#1 \$version1 of function version_compare expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, list\\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#2 \$languageName of method Appwrite\\Platform\\Tasks\\SDKs\:\:cleanupTarget\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#2 \$ref of static method Utopia\\Agents\\DiffCheck\\Repository\:\:remote\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#2 \$sdkKey of method Appwrite\\Platform\\Tasks\\SDKs\:\:updateSdkVersion\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#2 \$subject of function preg_match expects string, string\|false given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#2 \$version of method Appwrite\\Platform\\Tasks\\SDKs\:\:extractReleaseNotes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#2 \$version of method Appwrite\\Platform\\Tasks\\SDKs\:\:updateChangelogFile\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#3 \$gitBranch of method Appwrite\\Platform\\Tasks\\SDKs\:\:createPullRequest\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#3 \$newVersion of method Appwrite\\Platform\\Tasks\\SDKs\:\:updateSdkVersion\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#3 \$notes of method Appwrite\\Platform\\Tasks\\SDKs\:\:updateChangelogFile\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#3 \$subject of function preg_replace expects array\\|string, string\|false given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#4 \$gitUrl of method Appwrite\\Platform\\Tasks\\SDKs\:\:pushToGit\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#4 \$repoBranch of method Appwrite\\Platform\\Tasks\\SDKs\:\:createPullRequest\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#5 \$aiChangelog of method Appwrite\\Platform\\Tasks\\SDKs\:\:createPullRequest\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#5 \$gitBranch of method Appwrite\\Platform\\Tasks\\SDKs\:\:pushToGit\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#6 \$repoBranch of method Appwrite\\Platform\\Tasks\\SDKs\:\:pushToGit\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Parameter \#6 \$sdkName of method Appwrite\\Platform\\Tasks\\SDKs\:\:updateExistingPr\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Part \$aiChangelog \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Part \$language\[''name''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 27 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Part \$language\[''version''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 6 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Part \$parsed\[''version''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Part \$parsed\[''versionBump''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Part \$releaseTarget \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Part \$releaseTitle \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Part \$releaseVersion \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 5 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Part \$url \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Tasks/SDKs.php - - message: '#^Variable \$prUrls might not be defined\.$#' identifier: variable.undefined count: 1 path: src/Appwrite/Platform/Tasks/SDKs.php - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/SSL.php - - - - message: '#^Binary operation "\*" between mixed and 1000 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Cannot access offset ''project'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Cannot access offset ''projectId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Cannot access offset ''resource'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Cannot access offset ''resourceId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Cannot access offset ''resourceUpdatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Cannot call method getDocument\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Cannot call method isEmpty\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Cannot call method record\(\) on Utopia\\Telemetry\\Gauge\|null\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Cannot call method record\(\) on Utopia\\Telemetry\\Histogram\|null\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Parameter \#1 \$datetime of function strtotime expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Parameter \#1 \$seconds of function sleep expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, list given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Part \$candidate\[''resourceId''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Part \$candidate\[''resourceType''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Part \$schedule\-\>getAttribute\(''projectId''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Part \$schedule\-\>getAttribute\(''resourceId''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Part \$schedule\[''projectId''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 4 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Part \$schedule\[''resourceId''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 4 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 3 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Property Appwrite\\Platform\\Tasks\\ScheduleBase\:\:\$schedules type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^While loop condition is always true\.$#' - identifier: while.alwaysTrue - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleBase.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Cannot access offset ''\$sequence'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Cannot access offset ''active'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Cannot access offset ''headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Cannot access offset ''method'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Cannot access offset ''path'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Cannot access offset ''project'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Cannot access offset ''resource'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Cannot access offset ''resourceId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Cannot access offset ''schedule'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Parameter \#1 \$body of method Appwrite\\Event\\Func\:\:setBody\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Parameter \#1 \$execution of method Appwrite\\Event\\Func\:\:setExecution\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Parameter \#1 \$functionId of method Appwrite\\Event\\Func\:\:setFunctionId\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Parameter \#1 \$headers of method Appwrite\\Event\\Func\:\:setHeaders\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Parameter \#1 \$method of method Appwrite\\Event\\Func\:\:setMethod\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Parameter \#1 \$path of method Appwrite\\Event\\Func\:\:setPath\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Parameter \#1 \$project of method Appwrite\\Event\\Event\:\:setProject\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Parameter \#1 \$project of method Appwrite\\Platform\\Tasks\\ScheduleBase\:\:updateProjectAccess\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Parameter \#1 \$userId of method Appwrite\\Event\\Event\:\:setUserId\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:deleteDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 2 - path: src/Appwrite/Platform/Tasks/ScheduleExecutions.php - - - - message: '#^Binary operation "\-" between mixed and 0\|float results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleFunctions.php - - - - message: '#^Cannot access offset ''project'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/ScheduleFunctions.php - - - - message: '#^Cannot access offset ''resource'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleFunctions.php - - - - message: '#^Cannot access offset ''schedule'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleFunctions.php - - - - message: '#^Parameter \#1 \$expression of class Cron\\CronExpression constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleFunctions.php - - - - message: '#^Parameter \#1 \$function of method Appwrite\\Event\\Func\:\:setFunction\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleFunctions.php - - - - message: '#^Parameter \#1 \$project of method Appwrite\\Event\\Event\:\:setProject\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleFunctions.php - - - - message: '#^Parameter \#1 \$project of method Appwrite\\Platform\\Tasks\\ScheduleBase\:\:updateProjectAccess\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleFunctions.php - - - - message: '#^Property Appwrite\\Platform\\Tasks\\ScheduleFunctions\:\:\$lastEnqueueUpdate \(float\|null\) is never assigned float so it can be removed from the property type\.$#' - identifier: property.unusedType - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleFunctions.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleMessages.php - - - - message: '#^Cannot access offset ''\$sequence'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleMessages.php - - - - message: '#^Cannot access offset ''active'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleMessages.php - - - - message: '#^Cannot access offset ''project'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/ScheduleMessages.php - - - - message: '#^Cannot access offset ''resourceId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleMessages.php - - - - message: '#^Cannot access offset ''schedule'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleMessages.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleMessages.php - - - - message: '#^Parameter \#1 \$messageId of method Appwrite\\Event\\Messaging\:\:setMessageId\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleMessages.php - - - - message: '#^Parameter \#1 \$project of method Appwrite\\Event\\Event\:\:setProject\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleMessages.php - - - - message: '#^Parameter \#1 \$project of method Appwrite\\Platform\\Tasks\\ScheduleBase\:\:updateProjectAccess\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleMessages.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:deleteDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleMessages.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Platform/Tasks/ScheduleMessages.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Binary operation "\." between ''/sites/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Binary operation "\." between ''/storage/buckets…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Binary operation "\." between ''Deployment not…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Binary operation "\." between ''Found\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''a_session_console'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''adapter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''buildCommand'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''buildRuntime'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''fallbackFile'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''frameworks'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''installCommand'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''outputDirectory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''providerOwner'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''providerRepositoryId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''providerRootDirectory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''providerVersion'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''screenshotDark'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''screenshotLight'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset ''variables'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Parameter \#1 \$message of static method Utopia\\Console\:\:error\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 12 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Parameter \#3 \$subject of function str_replace expects array\\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Part \$template\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Part \$variable\[''name''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Strict comparison using \=\=\= between array\ and null will always evaluate to false\.$#' - identifier: identical.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Tasks/Screenshot.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Cannot access offset ''docs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Cannot access offset ''platforms'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Cannot access offset ''sdk'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Cannot access offset ''subtitle'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Cannot call method getLabel\(\) on mixed\.$#' - identifier: method.nonObject - count: 4 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Cannot call method setParam\(\) on mixed\.$#' - identifier: method.nonObject - count: 15 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\Specs\:\:getFormatInstance\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\Specs\:\:getFormatInstance\(\) has parameter \$arguments with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\Specs\:\:getKeys\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 3 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\Specs\:\:getSDKPlatformsForRouteSecurity\(\) has parameter \$routeSecurity with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\Specs\:\:getSDKPlatformsForRouteSecurity\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Parameter \#1 \$app of class Appwrite\\SDK\\Specification\\Format\\OpenAPI3 constructor expects Utopia\\Http\\Http, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Parameter \#1 \$app of class Appwrite\\SDK\\Specification\\Format\\Swagger2 constructor expects Utopia\\Http\\Http, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Parameter \#1 \$arg of function escapeshellarg expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Parameter \#1 \$format of class Appwrite\\SDK\\Specification\\Specification constructor expects Appwrite\\SDK\\Specification\\Format, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Parameter \#1 \$path of function basename expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Parameter \#1 \$string of function addslashes expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Parameter \#2 \$callback of function array_filter expects \(callable\(non\-empty\-string\|false\)\: bool\)\|null, Closure\(string\)\: bool given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Specs.php - - message: '#^Anonymous function has an unused use \$dbForPlatform\.$#' identifier: closure.unusedUse count: 1 path: src/Appwrite/Platform/Tasks/StatsResources.php - - - message: '#^Binary operation "\." between ''project\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/StatsResources.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/StatsResources.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Tasks/StatsResources.php - - - - message: '#^Cannot call method getSequence\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Tasks/StatsResources.php - - - - message: '#^Method Appwrite\\Platform\\Tasks\\StatsResources\:\:getName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Tasks/StatsResources.php - - - - message: '#^Parameter \#1 \$project of method Appwrite\\Event\\Event\:\:setProject\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/StatsResources.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/StatsResources.php - - - - message: '#^Negated boolean expression is always false\.$#' - identifier: booleanNot.alwaysFalse - count: 1 - path: src/Appwrite/Platform/Tasks/Upgrade.php - - - - message: '#^Parameter \#1 \$data of class Appwrite\\Docker\\Compose constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Upgrade.php - - - - message: '#^Parameter \#7 \$database of method Appwrite\\Platform\\Tasks\\Install\:\:action\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Upgrade.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: src/Appwrite/Platform/Tasks/Vars.php - - - - message: '#^Binary operation "\." between ''\- '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Tasks/Vars.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Tasks/Vars.php - - - - message: '#^Cannot access offset ''variables'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Tasks/Vars.php - - - - message: '#^Parameter \#1 \$name of static method Utopia\\System\\System\:\:getEnv\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Vars.php - - - - message: '#^Parameter \#1 \$message of static method Utopia\\Console\:\:log\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Tasks/Version.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Audits.php - - - - message: '#^Cannot access offset ''logs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Appwrite/Platform/Workers/Audits.php - - - - message: '#^Cannot access offset ''project'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Audits.php - - - - message: '#^Cannot call method logBatch\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Audits.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Workers/Audits.php - - message: '#^PHPDoc tag @param references unknown parameter\: \$getProjectDB$#' identifier: parameter.notFound count: 1 path: src/Appwrite/Platform/Workers/Audits.php - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Audits.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Audits.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Audits.php - - - - message: '#^Property Appwrite\\Platform\\Workers\\Audits\:\:\$logs type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Audits.php - - - - message: '#^Binary operation "\+" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Binary operation "\." between ''Domain verification…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Binary operation "\." between ''Invalid action\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Certificates\:\:__construct\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Certificates\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Certificates\:\:handleCertificateGenerationAction\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Certificates\:\:notifyError\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Parameter \#1 \$default of class Utopia\\Locale\\Locale constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Parameter \#1 \$dnsValidatorClass of method Appwrite\\Platform\\Modules\\Proxy\\Action\:\:__construct\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Parameter \#1 \$domain of class Utopia\\Domains\\Domain constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Locale\\Locale\:\:setFallback\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Parameter \#1 \$preview of method Appwrite\\Event\\Mail\:\:setPreview\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Parameter \#1 \$recipient of method Appwrite\\Event\\Mail\:\:setRecipient\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Parameter \#1 \$subject of method Appwrite\\Event\\Mail\:\:setSubject\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Parameter \#10 \$validationDomain of method Appwrite\\Platform\\Workers\\Certificates\:\:handleDomainVerificationAction\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Parameter \#12 \$skipRenewCheck of method Appwrite\\Platform\\Workers\\Certificates\:\:handleCertificateGenerationAction\(\) expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Parameter \#14 \$validationDomain of method Appwrite\\Platform\\Workers\\Certificates\:\:handleCertificateGenerationAction\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Parameter \#2 \$domainType of method Appwrite\\Platform\\Workers\\Certificates\:\:handleCertificateGenerationAction\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Certificates.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Workers/Certificates.php - - message: '#^Anonymous function has an unused use \$certificates\.$#' identifier: closure.unusedUse @@ -31086,162 +960,6 @@ parameters: count: 1 path: src/Appwrite/Platform/Workers/Deletes.php - - - message: '#^Binary operation "\*" between \-1 and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Binary operation "\." between ''Deleted CSV file\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Binary operation "\." between ''Deleted build files…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Binary operation "\." between ''Deleted deployment…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Binary operation "\." between ''Deleted schedule…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Binary operation "\." between ''Deleting schedule…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Binary operation "\." between ''Failed to delete…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Binary operation "\." between ''Failed to get…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Binary operation "\." between ''mysql\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Cannot access offset ''projects'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Cannot call method decreaseDocumentAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Cannot call method deleteCollection\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Cannot call method deleteDocuments\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Cannot call method getDocument\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Cannot call method isEmpty\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Cannot call method purgeCachedDocument\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Cannot call method setAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 8 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Cannot call method updateDocument\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Match expression does not handle remaining value\: mixed$#' - identifier: match.unhandled - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Deletes\:\:deleteByGroup\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Deletes\:\:deleteTopic\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - message: '#^PHPDoc tag @param references unknown parameter\: \$build$#' identifier: parameter.notFound @@ -31272,564 +990,12 @@ parameters: count: 1 path: src/Appwrite/Platform/Workers/Deletes.php - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#1 \$attributes of static method Utopia\\Database\\Query\:\:select\(\) expects array\, array given\.$#' - identifier: argument.type - count: 10 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#1 \$database of static method Appwrite\\Deletes\\Identities\:\:delete\(\) expects Utopia\\Database\\Database, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#1 \$database of static method Appwrite\\Deletes\\Targets\:\:delete\(\) expects Utopia\\Database\\Database, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#1 \$database of static method Appwrite\\Deletes\\Targets\:\:deleteSubscribers\(\) expects Utopia\\Database\\Database, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#1 \$domain of method Appwrite\\Certificates\\Adapter\:\:deleteCertificate\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#1 \$dsn of class Utopia\\DSN\\DSN constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:delete\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:exists\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#1 \$value of function strval expects bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#2 \$datetime of method Appwrite\\Platform\\Workers\\Deletes\:\:deleteRealtimeUsage\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:deleteDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#2 \$queries of method Utopia\\Database\\Database\:\:deleteDocuments\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#2 \$resourceInternalId of closure expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Logger\\Log\:\:addTag\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#2 \$value of static method Utopia\\Database\\Query\:\:lessThan\(\) expects bool\|float\|int\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#2 \$value of static method Utopia\\Database\\Query\:\:notEqual\(\) expects array\\|bool\|float\|int\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 40 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, list\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#3 \$database of method Appwrite\\Platform\\Workers\\Deletes\:\:deleteByGroup\(\) expects Utopia\\Database\\Database, mixed given\.$#' - identifier: argument.type - count: 16 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#3 \$database of method Appwrite\\Platform\\Workers\\Deletes\:\:listByGroup\(\) expects Utopia\\Database\\Database, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#3 \$datetime of method Appwrite\\Platform\\Workers\\Deletes\:\:deleteCacheByDate\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#3 \$datetime of method Appwrite\\Platform\\Workers\\Deletes\:\:deleteSchedules\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#3 \$resource of method Appwrite\\Platform\\Workers\\Deletes\:\:deleteCacheByResource\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#3 \$resourceType of closure expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#4 \$hourlyUsageRetentionDatetime of method Appwrite\\Platform\\Workers\\Deletes\:\:deleteUsageStats\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#4 \$resourceInternalId of method Appwrite\\Platform\\Workers\\Deletes\:\:deleteExecutionsByLimit\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#4 \$resourceType of method Appwrite\\Platform\\Workers\\Deletes\:\:deleteCacheByResource\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Parameter \#5 \$resourceType of method Appwrite\\Platform\\Workers\\Deletes\:\:deleteExecutionsByLimit\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Property Appwrite\\Platform\\Workers\\Deletes\:\:\$selects type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Deletes.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Workers/Executions.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Executions.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 3 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Binary operation "\+" between mixed and 60 results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Binary operation "\." between ''Iterating function\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Binary operation "\." between ''Triggered function\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Binary operation "\." between ''cd /usr/local…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Cannot access offset ''cpus'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Cannot access offset ''image'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Cannot access offset ''memory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Cannot access offset ''startCommand'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Cannot access offset ''version'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Cannot access offset ''x\-appwrite\-execution\-id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 4 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 4 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Functions\:\:execute\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Functions\:\:execute\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Offset ''x\-appwrite\-event'' on non\-empty\-array on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Offset ''x\-appwrite\-trigger'' on non\-empty\-array on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Offset ''x\-appwrite\-user\-id'' on non\-empty\-array on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Offset ''x\-appwrite\-user\-jwt'' on non\-empty\-array on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - message: '#^PHPDoc tag @throws with type Appwrite\\Platform\\Workers\\Exception is not subtype of Throwable$#' identifier: throws.notThrowable count: 2 path: src/Appwrite/Platform/Workers/Functions.php - - - message: '#^Parameter \#1 \$array of function array_intersect expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \#1 \$haystack of function str_ends_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \#1 \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \#1 \$string of function strtolower expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \#2 \$value of method Utopia\\Logger\\Log\:\:addTag\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:contains\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \#2 \.\.\.\$arrays of function array_intersect expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$cpus of method Executor\\Executor\:\:createExecution\(\) expects float, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$data of method Appwrite\\Platform\\Workers\\Functions\:\:execute\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$deploymentId of method Executor\\Executor\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$entrypoint of method Executor\\Executor\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$event of method Appwrite\\Platform\\Workers\\Functions\:\:execute\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$eventData of method Appwrite\\Platform\\Workers\\Functions\:\:execute\(\) expects string\|null, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$headers of method Appwrite\\Platform\\Workers\\Functions\:\:execute\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$image of method Executor\\Executor\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$jwt of method Appwrite\\Platform\\Workers\\Functions\:\:execute\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$logging of method Executor\\Executor\:\:createExecution\(\) expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$memory of method Executor\\Executor\:\:createExecution\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$method of method Appwrite\\Platform\\Workers\\Functions\:\:execute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$path of method Appwrite\\Platform\\Workers\\Functions\:\:execute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$platform of method Appwrite\\Platform\\Workers\\Functions\:\:execute\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$source of method Executor\\Executor\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$spec of class Appwrite\\Bus\\Events\\ExecutionCompleted constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$timeout of method Executor\\Executor\:\:createExecution\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Parameter \$version of method Executor\\Executor\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Part \$command \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Part \$platform\[''apiHostname''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 3 - path: src/Appwrite/Platform/Workers/Functions.php - - - - message: '#^Ternary operator condition is always true\.$#' - identifier: ternary.alwaysTrue - count: 1 - path: src/Appwrite/Platform/Workers/Functions.php - - message: '#^Variable \$body on left side of \?\? always exists and is not nullable\.$#' identifier: nullCoalesce.variable @@ -31848,2028 +1014,18 @@ parameters: count: 1 path: src/Appwrite/Platform/Workers/Functions.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 3 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Binary operation "\." between ''\{\{'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Cannot access offset ''content'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Cannot access offset ''encoding'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Cannot access offset ''filename'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Cannot access offset ''heading'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Cannot access offset ''host'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Cannot access offset ''replyTo'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Cannot access offset ''replyToEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Cannot access offset ''replyToName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Cannot access offset ''senderEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Cannot access offset ''senderName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Cannot access offset ''subject'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Cannot access offset ''year'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Mails\:\:getMailer\(\) has parameter \$smtp with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Parameter \#1 \$address of method PHPMailer\\PHPMailer\\PHPMailer\:\:addAddress\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Parameter \#1 \$address of method PHPMailer\\PHPMailer\\PHPMailer\:\:addReplyTo\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Parameter \#1 \$address of method PHPMailer\\PHPMailer\\PHPMailer\:\:setFrom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Parameter \#1 \$content of static method Appwrite\\Template\\Template\:\:fromString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Parameter \#1 \$path of static method Appwrite\\Template\\Template\:\:fromFile\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Parameter \#1 \$smtp of method Appwrite\\Platform\\Workers\\Mails\:\:getMailer\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Parameter \#1 \$string of function base64_decode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Parameter \#1 \$string of function strip_tags expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Parameter \#1 \$string of function urldecode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Parameter \#2 \$filename of method PHPMailer\\PHPMailer\\PHPMailer\:\:addStringAttachment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Parameter \#2 \$name of method PHPMailer\\PHPMailer\\PHPMailer\:\:addAddress\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Parameter \#2 \$name of method PHPMailer\\PHPMailer\\PHPMailer\:\:addReplyTo\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Parameter \#2 \$name of method PHPMailer\\PHPMailer\\PHPMailer\:\:setFrom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Parameter \#3 \$encoding of method PHPMailer\\PHPMailer\\PHPMailer\:\:addStringAttachment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Parameter \#4 \$type of method PHPMailer\\PHPMailer\\PHPMailer\:\:addStringAttachment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Property PHPMailer\\PHPMailer\\PHPMailer\:\:\$AltBody \(string\) does not accept string\|null\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Property PHPMailer\\PHPMailer\\PHPMailer\:\:\$Host \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Property PHPMailer\\PHPMailer\\PHPMailer\:\:\$Password \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Property PHPMailer\\PHPMailer\\PHPMailer\:\:\$Port \(int\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Property PHPMailer\\PHPMailer\\PHPMailer\:\:\$SMTPSecure \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Property PHPMailer\\PHPMailer\\PHPMailer\:\:\$Username \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Platform/Workers/Mails.php - - - - message: '#^Argument of an invalid type array\\|int\|string\>\|int\|string supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 3 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Binary operation "\+" between mixed and int\<0, max\> results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Binary operation "\+\=" between \(float\|int\) and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - message: '#^Binary operation "\+\=" between 0 and array\\|int\|string\>\|int\|string results in an error\.$#' identifier: assignOp.invalid count: 1 path: src/Appwrite/Platform/Workers/Messaging.php - - - message: '#^Binary operation "\." between ''/storage/uploads…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Binary operation "\." between ''File not found in '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Binary operation "\." between ''Unknown message…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''accountSid'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''action'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''apiKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''apiSecret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''attachments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''authKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''authKeyId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''authToken'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''autoTLS'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''badge'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''bcc'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''bucketId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''bundleId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''cc'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''color'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''content'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''contentAvailable'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''critical'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''customerId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''deliveredTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''deliveryErrors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''domain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''encryption'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''fileId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''from'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''fromEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''fromName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''host'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''html'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''icon'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''image'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''isEuRegion'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''mailer'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''messageId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''messagingServiceSid'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''password'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''port'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''priority'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''replyToEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''replyToName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''sandbox'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''senderId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''serviceAccountJSON'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''sound'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''status'' on array\\|int\|string\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''subject'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''tag'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''teamId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''templateId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''title'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''url'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''useDLT'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot access offset ''username'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot call method getMaxMessagesPerRequest\(\) on Utopia\\Messaging\\Adapter\\Email\|Utopia\\Messaging\\Adapter\\Push\|Utopia\\Messaging\\Adapter\\SMS\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Cannot call method send\(\) on Utopia\\Messaging\\Adapter\\Email\|Utopia\\Messaging\\Adapter\\Push\|Utopia\\Messaging\\Adapter\\SMS\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Messaging\:\:getEmailAdapter\(\) should return Utopia\\Messaging\\Adapter\\Email\|null but returns Utopia\\Messaging\\Adapter\\Email\\Mailgun\|Utopia\\Messaging\\Adapter\\Email\\Resend\|Utopia\\Messaging\\Adapter\\Email\\Sendgrid\|Utopia\\Messaging\\Adapter\\Email\\SMTP\|Utopia\\Messaging\\Adapter\\SMS\\Mock\|null\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Messaging\:\:getLocalDevice\(\) has parameter \$project with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Messaging\:\:getPushAdapter\(\) should return Utopia\\Messaging\\Adapter\\Push\|null but returns Utopia\\Messaging\\Adapter\\Push\\APNS\|Utopia\\Messaging\\Adapter\\Push\\FCM\|Utopia\\Messaging\\Adapter\\SMS\\Mock\|null\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Messaging\:\:sendInternalSMSMessage\(\) has parameter \$recipients with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^PHPDoc tag @var for variable \$results has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$accountSid of class Utopia\\Messaging\\Adapter\\SMS\\Twilio constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$apiKey of class Utopia\\Messaging\\Adapter\\Email\\Mailgun constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$apiKey of class Utopia\\Messaging\\Adapter\\Email\\Resend constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$apiKey of class Utopia\\Messaging\\Adapter\\Email\\Sendgrid constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$apiKey of class Utopia\\Messaging\\Adapter\\SMS\\Fast2SMS constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$apiKey of class Utopia\\Messaging\\Adapter\\SMS\\Vonage constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$authKey of class Utopia\\Messaging\\Adapter\\Push\\APNS constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$customerId of class Utopia\\Messaging\\Adapter\\SMS\\Telesign constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$defaultAdapter of class Utopia\\Messaging\\Adapter\\SMS\\GEOSMS constructor expects Utopia\\Messaging\\Adapter\\SMS, Utopia\\Messaging\\Adapter\\SMS\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$haystack of function str_starts_with expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$host of class Utopia\\Messaging\\Adapter\\Email\\SMTP constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$name of class Utopia\\Messaging\\Messages\\Email\\Attachment constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$numberToParse of method libphonenumber\\PhoneNumberUtil\:\:parse\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:exists\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\:\:transfer\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\\Local\:\:delete\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$path of method Utopia\\Storage\\Device\\Local\:\:exists\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$senderId of class Utopia\\Messaging\\Adapter\\SMS\\Inforu constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$senderId of class Utopia\\Messaging\\Adapter\\SMS\\Msg91 constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$serviceAccountJSON of class Utopia\\Messaging\\Adapter\\Push\\FCM constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$to of class Utopia\\Messaging\\Messages\\Email constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$to of class Utopia\\Messaging\\Messages\\Push constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$to of class Utopia\\Messaging\\Messages\\SMS constructor expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$to of class Utopia\\Messaging\\Messages\\SMS constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$username of class Utopia\\Messaging\\Adapter\\SMS\\TextMagic constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 9 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#10 \$attachments of class Utopia\\Messaging\\Messages\\Email constructor expects array\\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#10 \$tag of class Utopia\\Messaging\\Messages\\Push constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#11 \$badge of class Utopia\\Messaging\\Messages\\Push constructor expects int\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#11 \$html of class Utopia\\Messaging\\Messages\\Email constructor expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#12 \$contentAvailable of class Utopia\\Messaging\\Messages\\Push constructor expects bool\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#13 \$critical of class Utopia\\Messaging\\Messages\\Push constructor expects bool\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$adapter of method Utopia\\Messaging\\Adapter\\SMS\\GEOSMS\:\:setLocal\(\) expects Utopia\\Messaging\\Adapter\\SMS, Utopia\\Messaging\\Adapter\\SMS\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$apiKey of class Utopia\\Messaging\\Adapter\\SMS\\Telesign constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$apiKey of class Utopia\\Messaging\\Adapter\\SMS\\TextMagic constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$apiSecret of class Utopia\\Messaging\\Adapter\\SMS\\Vonage constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$apiToken of class Utopia\\Messaging\\Adapter\\SMS\\Inforu constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$authKey of class Utopia\\Messaging\\Adapter\\SMS\\Msg91 constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$authKeyId of class Utopia\\Messaging\\Adapter\\Push\\APNS constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$authToken of class Utopia\\Messaging\\Adapter\\SMS\\Twilio constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$callback of function array_filter expects \(callable\(mixed\)\: bool\)\|null, Closure\(Utopia\\Database\\Document\)\: bool given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$content of class Utopia\\Messaging\\Messages\\SMS constructor expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$default of method Utopia\\DSN\\DSN\:\:getParam\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$destination of method Utopia\\Storage\\Device\:\:transfer\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$domain of class Utopia\\Messaging\\Adapter\\Email\\Mailgun constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$length of function array_chunk expects int\<1, max\>, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$path of class Utopia\\Messaging\\Messages\\Email\\Attachment constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$port of class Utopia\\Messaging\\Adapter\\Email\\SMTP constructor expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$senderId of class Utopia\\Messaging\\Adapter\\SMS\\Fast2SMS constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$subject of class Utopia\\Messaging\\Messages\\Email constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$title of class Utopia\\Messaging\\Messages\\Push constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$value of method Appwrite\\Usage\\Context\:\:addMetric\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$value of static method Utopia\\Span\\Span\:\:add\(\) expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, mixed given\.$#' - identifier: argument.type - count: 5 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#2 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#3 \$body of class Utopia\\Messaging\\Messages\\Push constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#3 \$content of class Utopia\\Messaging\\Messages\\Email constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#3 \$from of class Utopia\\Messaging\\Messages\\SMS constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#3 \$isEU of class Utopia\\Messaging\\Adapter\\Email\\Mailgun constructor expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#3 \$messageId of class Utopia\\Messaging\\Adapter\\SMS\\Fast2SMS constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#3 \$recipients of method Appwrite\\Platform\\Workers\\Messaging\:\:sendInternalSMSMessage\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#3 \$teamId of class Utopia\\Messaging\\Adapter\\Push\\APNS constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#3 \$templateId of class Utopia\\Messaging\\Adapter\\SMS\\Msg91 constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#3 \$type of class Utopia\\Messaging\\Messages\\Email\\Attachment constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#3 \$username of class Utopia\\Messaging\\Adapter\\Email\\SMTP constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#4 \$bundleId of class Utopia\\Messaging\\Adapter\\Push\\APNS constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#4 \$data of class Utopia\\Messaging\\Messages\\Push constructor expects array\\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#4 \$fromName of class Utopia\\Messaging\\Messages\\Email constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#4 \$messagingServiceSid of class Utopia\\Messaging\\Adapter\\SMS\\Twilio constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#4 \$password of class Utopia\\Messaging\\Adapter\\Email\\SMTP constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#4 \$useDLT of class Utopia\\Messaging\\Adapter\\SMS\\Fast2SMS constructor expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#5 \$action of class Utopia\\Messaging\\Messages\\Push constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#5 \$fromEmail of class Utopia\\Messaging\\Messages\\Email constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#5 \$sandbox of class Utopia\\Messaging\\Adapter\\Push\\APNS constructor expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#5 \$smtpSecure of class Utopia\\Messaging\\Adapter\\Email\\SMTP constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#6 \$replyToName of class Utopia\\Messaging\\Messages\\Email constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#6 \$smtpAutoTLS of class Utopia\\Messaging\\Adapter\\Email\\SMTP constructor expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#6 \$sound of class Utopia\\Messaging\\Messages\\Push constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#7 \$image of class Utopia\\Messaging\\Messages\\Push constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#7 \$replyToEmail of class Utopia\\Messaging\\Messages\\Email constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#7 \$xMailer of class Utopia\\Messaging\\Adapter\\Email\\SMTP constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#8 \$cc of class Utopia\\Messaging\\Messages\\Email constructor expects array\\>\|null, list\\> given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#8 \$icon of class Utopia\\Messaging\\Messages\\Push constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#9 \$bcc of class Utopia\\Messaging\\Messages\\Email constructor expects array\\>\|null, list\\> given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Parameter \#9 \$color of class Utopia\\Messaging\\Messages\\Push constructor expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Part \$message\-\>getAttribute\(''search''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Part \$provider\-\>getAttribute\(''name''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Part \$provider\-\>getAttribute\(''provider''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Part \$provider\-\>getAttribute\(''type''\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Part \$result\[''error''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Part \$result\[''recipient''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Workers/Messaging.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 3 - path: src/Appwrite/Platform/Workers/Messaging.php - - message: '#^Variable \$provider might not be defined\.$#' identifier: variable.undefined count: 1 path: src/Appwrite/Platform/Workers/Messaging.php - - - message: '#^Binary operation "\." between ''CSV export failure…''\|''CSV export success…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Binary operation "\." between ''User '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''adminSecret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''apiKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''bucketId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''collections'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''columns'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''database'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''databaseHost'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''databases'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''delimiter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''destinationApiKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''destinationEndpoint'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''downloadUrl'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''enclosure'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''endpoint'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''escape'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''filename'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''header'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''password'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''path'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''port'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''projectId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''queries'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''region'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''serviceAccount'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''subdomain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''userInternalId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset ''username'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot call method createDocument\(\) on Utopia\\Database\\Database\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot call method delete\(\) on Utopia\\Storage\\Device\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot call method findOne\(\) on Utopia\\Database\\Database\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot call method getDocument\(\) on Utopia\\Database\\Database\|null\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot call method getFileHash\(\) on Utopia\\Storage\\Device\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot call method getFileMimeType\(\) on Utopia\\Storage\\Device\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot call method getFileSize\(\) on Utopia\\Storage\\Device\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot call method getId\(\) on Utopia\\Database\\Document\|null\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot call method getPath\(\) on Utopia\\Storage\\Device\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot call method getSequence\(\) on Utopia\\Database\\Document\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Cannot call method updateDocument\(\) on Utopia\\Database\\Database\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Migrations\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Migrations\:\:handleCSVExportComplete\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Migrations\:\:processMigration\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Migrations\:\:processMigrationResourceStats\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Migrations\:\:processMigrationResourceStats\(\) has parameter \$resources with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Migrations\:\:sanitizeErrors\(\) has parameter \$destinationErrors with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Migrations\:\:sanitizeErrors\(\) has parameter \$sourceErrors with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Migrations\:\:sanitizeErrors\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Migrations\:\:sendCSVEmail\(\) has parameter \$options with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Migrations\:\:sendCSVEmail\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$callback of function call_user_func expects callable\(\)\: mixed, \(callable\(\)\: mixed\)\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$default of class Utopia\\Locale\\Locale constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$deviceForFiles of class Utopia\\Migration\\Destinations\\CSV constructor expects Utopia\\Storage\\Device, Utopia\\Storage\\Device\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$endpoint of class Utopia\\Migration\\Sources\\Supabase constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$filename of method Appwrite\\Platform\\Workers\\Migrations\:\:sanitizeFilename\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$name of method Appwrite\\Event\\Mail\:\:setName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$name of method Appwrite\\Event\\Mail\:\:setSenderName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$name of method Utopia\\Locale\\Locale\:\:setFallback\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$preview of method Appwrite\\Event\\Mail\:\:setPreview\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$project of class Utopia\\Migration\\Sources\\Appwrite constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$project of method Appwrite\\Platform\\Workers\\Migrations\:\:generateAPIKey\(\) expects Utopia\\Database\\Document, Utopia\\Database\\Document\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$project of method Appwrite\\Platform\\Workers\\Migrations\:\:handleCSVExportComplete\(\) expects Utopia\\Database\\Document, Utopia\\Database\\Document\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$recipient of method Appwrite\\Event\\Mail\:\:setRecipient\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$resourceId of class Utopia\\Migration\\Sources\\CSV constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$resources of method Utopia\\Migration\\Sources\\Firebase\:\:report\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$resources of method Utopia\\Migration\\Transfer\:\:run\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$serviceAccount of class Utopia\\Migration\\Sources\\Firebase constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$string of function trim expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$subdomain of class Utopia\\Migration\\Sources\\NHost constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$subject of method Appwrite\\Event\\Mail\:\:setSubject\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#2 \$endpoint of class Utopia\\Migration\\Destinations\\Appwrite constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#2 \$endpoint of class Utopia\\Migration\\Sources\\Appwrite constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#2 \$filePath of class Utopia\\Migration\\Sources\\CSV constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#2 \$key of class Utopia\\Migration\\Sources\\Supabase constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#2 \$project of method Appwrite\\Platform\\Workers\\Migrations\:\:updateMigrationDocument\(\) expects Utopia\\Database\\Document, Utopia\\Database\\Document\|null given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#2 \$region of class Utopia\\Migration\\Sources\\NHost constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#2 \$resourceId of class Utopia\\Migration\\Destinations\\CSV constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#2 \$value of method Appwrite\\Usage\\Context\:\:addMetric\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#3 \$adminSecret of class Utopia\\Migration\\Sources\\NHost constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#3 \$device of class Utopia\\Migration\\Sources\\CSV constructor expects Utopia\\Storage\\Device, Utopia\\Storage\\Device\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#3 \$directory of class Utopia\\Migration\\Destinations\\CSV constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#3 \$host of class Utopia\\Migration\\Sources\\Supabase constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#3 \$key of class Utopia\\Migration\\Destinations\\Appwrite constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#3 \$key of class Utopia\\Migration\\Sources\\Appwrite constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#3 \$projectDocument of method Appwrite\\Platform\\Workers\\Migrations\:\:processMigrationResourceStats\(\) expects Utopia\\Database\\Document, Utopia\\Database\\Document\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#3 \$rootResourceId of method Utopia\\Migration\\Transfer\:\:run\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#3 \$subject of function preg_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#4 \$database of class Utopia\\Migration\\Destinations\\Appwrite constructor expects Utopia\\Database\\Database, Utopia\\Database\\Database\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#4 \$databaseName of class Utopia\\Migration\\Sources\\NHost constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#4 \$filename of class Utopia\\Migration\\Destinations\\CSV constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#4 \$rootResourceType of method Utopia\\Migration\\Transfer\:\:run\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#5 \$allowedColumns of class Utopia\\Migration\\Destinations\\CSV constructor expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#5 \$collectionStructure of class Utopia\\Migration\\Destinations\\Appwrite constructor expects array\\>, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#5 \$source of method Appwrite\\Platform\\Workers\\Migrations\:\:processMigrationResourceStats\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#5 \$username of class Utopia\\Migration\\Sources\\NHost constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#5 \$username of class Utopia\\Migration\\Sources\\Supabase constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#6 \$delimiter of class Utopia\\Migration\\Destinations\\CSV constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#6 \$password of class Utopia\\Migration\\Sources\\NHost constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#6 \$password of class Utopia\\Migration\\Sources\\Supabase constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#6 \$platform of method Appwrite\\Platform\\Workers\\Migrations\:\:processMigration\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#7 \$enclosure of class Utopia\\Migration\\Destinations\\CSV constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#7 \$port of class Utopia\\Migration\\Sources\\NHost constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#7 \$port of class Utopia\\Migration\\Sources\\Supabase constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#7 \$resourceId of method Appwrite\\Platform\\Workers\\Migrations\:\:processMigrationResourceStats\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#8 \$escape of class Utopia\\Migration\\Destinations\\CSV constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \#9 \$includeHeaders of class Utopia\\Migration\\Destinations\\CSV constructor expects bool, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Parameter \$options of method Appwrite\\Platform\\Workers\\Migrations\:\:sendCSVEmail\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Property Appwrite\\Platform\\Workers\\Migrations\:\:\$plan type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Property Appwrite\\Platform\\Workers\\Migrations\:\:\$source is unused\.$#' - identifier: property.unused - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Property Appwrite\\Platform\\Workers\\Migrations\:\:\$sourceReport \(array\\) does not accept array\\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - - - message: '#^Trying to invoke \(callable\(\)\: mixed\)\|null but it might not be a callable\.$#' - identifier: callable.nonCallable - count: 1 - path: src/Appwrite/Platform/Workers/Migrations.php - - message: '#^Variable \$aggregatedResources might not be defined\.$#' identifier: variable.undefined @@ -33882,1140 +1038,36 @@ parameters: count: 1 path: src/Appwrite/Platform/Workers/StatsResources.php - - - message: '#^Binary operation "\+\=" between float\|int and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 3 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Binary operation "\." between ''bucket_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Binary operation "\." between ''database_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Cannot access offset ''metric'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Cannot access offset ''period'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Cannot access offset ''time'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Cannot call method getSequence\(\) on mixed\.$#' - identifier: method.nonObject - count: 15 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\StatsResources\:\:countForBuckets\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\StatsResources\:\:countForCollections\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\StatsResources\:\:countForDatabase\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\StatsResources\:\:countForFunctions\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\StatsResources\:\:countForSites\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\StatsResources\:\:countImageTransformations\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\StatsResources\:\:createStatsDocuments\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Parameter \#1 \$format of function date expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Parameter \#1 \$region of method Appwrite\\Platform\\Workers\\StatsResources\:\:createStatsDocuments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Parameter \#1 \$string1 of function strcmp expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Parameter \#2 \$database of method Appwrite\\Platform\\Workers\\StatsResources\:\:countForCollections\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Parameter \#2 \$documents of method Utopia\\Database\\Database\:\:upsertDocuments\(\) expects array\, list given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Parameter \#2 \$region of method Appwrite\\Platform\\Workers\\StatsResources\:\:countForDatabase\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Parameter \#2 \$region of method Appwrite\\Platform\\Workers\\StatsResources\:\:countForSitesAndFunctions\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 10 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Parameter \#2 \$string2 of function strcmp expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 10 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Parameter \#3 \$region of method Appwrite\\Platform\\Workers\\StatsResources\:\:countForBuckets\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Parameter \#3 \$region of method Appwrite\\Platform\\Workers\\StatsResources\:\:countImageTransformations\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Parameter \#3 \$value of method Appwrite\\Platform\\Workers\\StatsResources\:\:createStatsDocuments\(\) expects int, float\|int given\.$#' - identifier: argument.type - count: 14 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Part \$bucket\-\>getSequence\(\) \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 3 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 4 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Property Appwrite\\Platform\\Workers\\StatsResources\:\:\$documents type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - - - message: '#^Property Appwrite\\Platform\\Workers\\StatsResources\:\:\$periods type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/StatsResources.php - - message: '#^Anonymous function has an unused use \$sequence\.$#' identifier: closure.unusedUse count: 1 path: src/Appwrite/Platform/Workers/StatsUsage.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 3 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Binary operation "\*" between mixed and \-1 results in an error\.$#' - identifier: binaryOp.invalid - count: 20 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Binary operation "\+\=" between mixed and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - message: '#^Callable callable\(\)\: Utopia\\Database\\Database invoked with 1 parameter, 0 required\.$#' identifier: arguments.count count: 2 path: src/Appwrite/Platform/Workers/StatsUsage.php - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Cannot access offset ''\$tenant'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Cannot access offset ''database'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Cannot access offset ''keys'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Cannot access offset ''metric'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Cannot access offset ''period'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Cannot access offset ''project'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Cannot access offset ''receivedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Cannot access offset ''stats'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Cannot access offset ''time'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Cannot call method getSequence\(\) on mixed\.$#' - identifier: method.nonObject - count: 5 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\StatsUsage\:\:reduce\(\) has parameter \$metrics with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#1 \$array of function usort expects TArray of array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#1 \$format of function date expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#1 \$format of method DateTime\:\:format\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#1 \$haystack of function str_ends_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#1 \$project of method Appwrite\\Platform\\Workers\\StatsUsage\:\:prepareForLogsDB\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#1 \$string1 of function strcmp expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#2 \$needle of function str_ends_with expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, array\ given\.$#' - identifier: argument.type - count: 7 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, int\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#2 \$string2 of function strcmp expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#3 \$documents of method Utopia\\Database\\Database\:\:upsertDocumentsWithIncrease\(\) expects array\, list given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \#3 \$documents of method Utopia\\Database\\Database\:\:upsertDocumentsWithIncrease\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Parameter \$metrics of method Appwrite\\Platform\\Workers\\StatsUsage\:\:reduce\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 2 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Property Appwrite\\Platform\\Workers\\StatsUsage\:\:\$periods type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Property Appwrite\\Platform\\Workers\\StatsUsage\:\:\$projects type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Property Appwrite\\Platform\\Workers\\StatsUsage\:\:\$skipBaseMetrics type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Property Appwrite\\Platform\\Workers\\StatsUsage\:\:\$skipParentIdMetrics type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Property Appwrite\\Platform\\Workers\\StatsUsage\:\:\$statDocuments type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Property Appwrite\\Platform\\Workers\\StatsUsage\:\:\$stats type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/StatsUsage.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Binary operation "\." between ''The server returned '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Binary operation "\." between ''URL\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Binary operation "\." between ''X\-Appwrite\-Webhook…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Webhooks\:\:action\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Webhooks\:\:execute\(\) has parameter \$events with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Webhooks\:\:execute\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Method Appwrite\\Platform\\Workers\\Webhooks\:\:sendEmailAlert\(\) has parameter \$plan with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#1 \$array of function array_intersect expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#1 \$attempts of method Appwrite\\Platform\\Workers\\Webhooks\:\:sendEmailAlert\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#1 \$events of method Appwrite\\Platform\\Workers\\Webhooks\:\:execute\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#1 \$input of class Utopia\\Database\\Document constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#1 \$name of method Appwrite\\Event\\Mail\:\:setName\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#1 \$recipient of method Appwrite\\Event\\Mail\:\:setRecipient\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#1 \$string of function mb_strcut expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#1 \$string of function rawurldecode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#1 \$url of function curl_init expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#2 \$payload of method Appwrite\\Platform\\Workers\\Webhooks\:\:execute\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, list\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#2 \.\.\.\$arrays of function array_intersect expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#3 \$key of function hash_hmac expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects 0\|2, false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects bool, int given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Parameter \#3 \$webhook of method Appwrite\\Platform\\Workers\\Webhooks\:\:execute\(\) expects Utopia\\Database\\Document, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Part \$httpPass \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Part \$httpUser \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Part \$region \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - - - message: '#^Property Appwrite\\Platform\\Workers\\Webhooks\:\:\$errors type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Platform/Workers/Webhooks.php - - message: '#^Variable \$curlError on left side of \?\? is never defined\.$#' identifier: nullCoalesce.variable count: 1 path: src/Appwrite/Platform/Workers/Webhooks.php - - - message: '#^Cannot call method then\(\) on class\-string\|object\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Promises/Promise.php - - message: '#^Unsafe usage of new static\(\)\.$#' identifier: new.static count: 3 path: src/Appwrite/Promises/Promise.php - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, iterable\ given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Promises/Swoole.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\:\:ping\(\) has parameter \$message with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/PubSub/Adapter.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\:\:publish\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/PubSub/Adapter.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\:\:publish\(\) has parameter \$channel with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/PubSub/Adapter.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\:\:publish\(\) has parameter \$message with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/PubSub/Adapter.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\:\:subscribe\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/PubSub/Adapter.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\:\:subscribe\(\) has parameter \$callback with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/PubSub/Adapter.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\:\:subscribe\(\) has parameter \$channels with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/PubSub/Adapter.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\\Pool\:\:__construct\(\) has parameter \$pool with generic class Utopia\\Pools\\Pool but does not specify its types\: TResource$#' - identifier: missingType.generics - count: 1 - path: src/Appwrite/PubSub/Adapter/Pool.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\\Pool\:\:ping\(\) has parameter \$message with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/PubSub/Adapter/Pool.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\\Pool\:\:ping\(\) should return bool but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/PubSub/Adapter/Pool.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\\Pool\:\:publish\(\) has parameter \$channel with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/PubSub/Adapter/Pool.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\\Pool\:\:publish\(\) has parameter \$message with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/PubSub/Adapter/Pool.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\\Pool\:\:subscribe\(\) has parameter \$callback with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/PubSub/Adapter/Pool.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\\Pool\:\:subscribe\(\) has parameter \$channels with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/PubSub/Adapter/Pool.php - - - - message: '#^Parameter \#1 \$callback of method Utopia\\Pools\\Pool\\:\:use\(\) expects callable\(mixed\)\: mixed, Closure\(Appwrite\\PubSub\\Adapter\)\: mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/PubSub/Adapter/Pool.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\\Redis\:\:ping\(\) has parameter \$message with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/PubSub/Adapter/Redis.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\\Redis\:\:publish\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/PubSub/Adapter/Redis.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\\Redis\:\:publish\(\) has parameter \$channel with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/PubSub/Adapter/Redis.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\\Redis\:\:publish\(\) has parameter \$message with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/PubSub/Adapter/Redis.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\\Redis\:\:subscribe\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/PubSub/Adapter/Redis.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\\Redis\:\:subscribe\(\) has parameter \$callback with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/PubSub/Adapter/Redis.php - - - - message: '#^Method Appwrite\\PubSub\\Adapter\\Redis\:\:subscribe\(\) has parameter \$channels with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/PubSub/Adapter/Redis.php - - - - message: '#^Parameter \#1 \$channel of method Redis\:\:publish\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/PubSub/Adapter/Redis.php - - - - message: '#^Parameter \#1 \$channels of method Redis\:\:subscribe\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/PubSub/Adapter/Redis.php - - - - message: '#^Parameter \#1 \$message of method Redis\:\:ping\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/PubSub/Adapter/Redis.php - - - - message: '#^Parameter \#2 \$cb of method Redis\:\:subscribe\(\) expects callable\(\)\: mixed, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/PubSub/Adapter/Redis.php - - - - message: '#^Parameter \#2 \$message of method Redis\:\:publish\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/PubSub/Adapter/Redis.php - - - - message: '#^Method Appwrite\\SDK\\Method\:\:__construct\(\) has parameter \$additionalParameters with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Method Appwrite\\SDK\\Method\:\:__construct\(\) has parameter \$hide with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Method Appwrite\\SDK\\Method\:\:getAdditionalParameters\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Method Appwrite\\SDK\\Method\:\:getAuth\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Method Appwrite\\SDK\\Method\:\:getErrors\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Method Appwrite\\SDK\\Method\:\:isHidden\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Method Appwrite\\SDK\\Method\:\:setAuth\(\) has parameter \$auth with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Method Appwrite\\SDK\\Method\:\:setParameters\(\) has parameter \$parameters with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Method Appwrite\\SDK\\Method\:\:validateAuthTypes\(\) has parameter \$authTypes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Method Appwrite\\SDK\\Method\:\:validateResponseModel\(\) has parameter \$responseModel with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Parameter \#1 \$key of method Appwrite\\Utopia\\Response\:\:getModel\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Property Appwrite\\SDK\\Method\:\:\$auth \(array\\) does not accept array\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Property Appwrite\\SDK\\Method\:\:\$deprecated \(Appwrite\\SDK\\Deprecated\|null\) does not accept Appwrite\\SDK\\Deprecated\|bool\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Property Appwrite\\SDK\\Method\:\:\$errors type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Property Appwrite\\SDK\\Method\:\:\$hide \(array\|bool\) does not accept Appwrite\\SDK\\Deprecated\|bool\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/SDK/Method.php - - message: '#^Property Appwrite\\SDK\\Method\:\:\$hide on left side of \?\? is not nullable nor uninitialized\.$#' identifier: nullCoalesce.initializedProperty count: 1 path: src/Appwrite/SDK/Method.php - - - message: '#^Property Appwrite\\SDK\\Method\:\:\$parameters \(array\\) does not accept array\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Property Appwrite\\SDK\\Method\:\:\$processed type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Method.php - - - - message: '#^Property Appwrite\\SDK\\Parameter\:\:\$validator \(\(callable\(\)\: mixed\)\|Utopia\\Validator\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/SDK/Parameter.php - - - - message: '#^Method Appwrite\\SDK\\Response\:\:__construct\(\) has parameter \$model with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Response.php - - - - message: '#^Method Appwrite\\SDK\\Response\:\:getModel\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Response.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 3 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Method Appwrite\\SDK\\Specification\\Format\:\:__construct\(\) has parameter \$keys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Method Appwrite\\SDK\\Specification\\Format\:\:__construct\(\) has parameter \$models with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Method Appwrite\\SDK\\Specification\\Format\:\:__construct\(\) has parameter \$routes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Method Appwrite\\SDK\\Specification\\Format\:\:__construct\(\) has parameter \$services with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Method Appwrite\\SDK\\Specification\\Format\:\:buildEnumBlacklist\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Method Appwrite\\SDK\\Specification\\Format\:\:getNestedModels\(\) has parameter \$usedModels with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Method Appwrite\\SDK\\Specification\\Format\:\:getParam\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Method Appwrite\\SDK\\Specification\\Format\:\:getRequestEnumKeys\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Method Appwrite\\SDK\\Specification\\Format\:\:getServices\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Method Appwrite\\SDK\\Specification\\Format\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Method Appwrite\\SDK\\Specification\\Format\:\:parseDescription\(\) has parameter \$excludedValues with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Method Appwrite\\SDK\\Specification\\Format\:\:setServices\(\) has parameter \$services with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Offset ''exclude'' on array\{namespace\: ''account'', methods\: array\{''createOAuth2Session'', ''createOAuth2Token'', ''updateMagicURLSessi…''\}, parameter\: ''provider'', excludeKeys\: array\{''mock'', ''mock\-unverified''\}\}\|array\{namespace\: ''projects'', methods\: array\{''updateOAuth2''\}, parameter\: ''provider'', excludeKeys\: array\{''mock'', ''mock\-unverified''\}\} in isset\(\) does not exist\.$#' - identifier: isset.offset - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Offset ''exclude'' on array\{namespace\: ''users'', methods\: array\{''getUsage''\}, parameter\: ''provider'', exclude\: true\} in isset\(\) always exists and is not nullable\.$#' - identifier: isset.offset - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Offset ''excludeKeys'' on array\{namespace\: ''account'', methods\: array\{''createOAuth2Session'', ''createOAuth2Token'', ''updateMagicURLSessi…''\}, parameter\: ''provider'', excludeKeys\: array\{''mock'', ''mock\-unverified''\}\}\|array\{namespace\: ''projects'', methods\: array\{''updateOAuth2''\}, parameter\: ''provider'', excludeKeys\: array\{''mock'', ''mock\-unverified''\}\} in isset\(\) always exists and is not nullable\.$#' - identifier: isset.offset - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Offset ''excludeKeys'' on array\{namespace\: ''users'', methods\: array\{''getUsage''\}, parameter\: ''provider'', exclude\: true\} in isset\(\) does not exist\.$#' - identifier: isset.offset - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - message: '#^PHPDoc tag @param references unknown parameter\: \$services$#' identifier: parameter.notFound @@ -35028,270 +1080,6 @@ parameters: count: 1 path: src/Appwrite/SDK/Specification/Format.php - - - message: '#^Parameter \#1 \$str of function preg_quote expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Parameter \#1 \$string of function trim expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Parameter \#3 \$subject of function preg_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Property Appwrite\\SDK\\Specification\\Format\:\:\$enumBlacklist type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Property Appwrite\\SDK\\Specification\\Format\:\:\$keys type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Property Appwrite\\SDK\\Specification\\Format\:\:\$models \(array\\) does not accept array\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Property Appwrite\\SDK\\Specification\\Format\:\:\$params type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Property Appwrite\\SDK\\Specification\\Format\:\:\$routes \(array\\) does not accept array\.$#' - identifier: assign.propertyType - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Property Appwrite\\SDK\\Specification\\Format\:\:\$services type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format.php - - - - message: '#^Binary operation "\." between ''\#/components…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 5 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''JWT'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''deprecated'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''description'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''enum'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''example'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 25 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''exclude'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''excludeKeys'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''format'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''injections'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''method'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''namespace'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''optional'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''parameter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''readOnly'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 27 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''validator'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''x\-appwrite'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset ''x\-upload\-id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot access property \$value on mixed\.$#' - identifier: property.nonObject - count: 2 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot call method getCode\(\) on Appwrite\\SDK\\Response\|array\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot call method getFormat\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot call method getList\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot call method getModel\(\) on Appwrite\\SDK\\Response\|array\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot call method getName\(\) on Appwrite\\Utopia\\Response\\Model\|string\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot call method getName\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot call method getType\(\) on Appwrite\\Utopia\\Response\\Model\|string\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot call method getType\(\) on mixed\.$#' - identifier: method.nonObject - count: 22 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot call method getValidator\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot call method getValidators\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Cannot call method isNone\(\) on Appwrite\\Utopia\\Response\\Model\|string\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - message: '#^Cannot unset offset ''schema'' on array\{description\: ''No content'', content\?\: non\-empty\-array\<''''\|''\*/\*''\|''application/json''\|''image/\*''\|''image/png''\|''multipart/form\-data''\|''text/html''\|''text/plain'', array\{schema\: array\{''\$ref''\: non\-falsy\-string\}\}\|array\{schema\: array\{oneOf\: array\\}\}\>\}\.$#' identifier: unset.offset @@ -35316,102 +1104,12 @@ parameters: count: 1 path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 14 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^If condition is always false\.$#' - identifier: if.alwaysFalse - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Match expression does not handle remaining value\: string$#' - identifier: match.unhandled - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Method Appwrite\\SDK\\Specification\\Format\\OpenAPI3\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Offset ''default'' on array\{name\: \(int\|string\), description\: mixed, required\: bool, schema\: non\-empty\-array\<''default''\|''enum''\|''format''\|''items''\|''type''\|''x\-enum\-keys''\|''x\-enum\-name''\|''x\-example''\|''x\-upload\-id'', mixed\>\} in isset\(\) does not exist\.$#' - identifier: isset.offset - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - message: '#^Offset ''securityDefinitions'' on array\{openapi\: ''3\.0\.0'', info\: array\{version\: string, title\: string, description\: string, termsOfService\: string, contact\: array\{name\: string, url\: string, email\: string\}, license\: array\{name\: ''BSD\-3\-Clause'', url\: ''https\://raw…''\}\}, servers\: array\{array\{url\: string\}, array\{url\: string\}\}, paths\: array\{\}, tags\: array, components\: array\{schemas\: array\{\}, securitySchemes\: array\}, externalDocs\: array\{description\: string, url\: string\}\} in isset\(\) does not exist\.$#' identifier: isset.offset count: 1 path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - message: '#^Offset ''x\-global'' on array\{name\: \(int\|string\), description\: mixed, required\: bool, schema\: non\-empty\-array\<''default''\|''enum''\|''format''\|''items''\|''type''\|''x\-enum\-keys''\|''x\-enum\-name''\|''x\-example''\|''x\-upload\-id'', mixed\>\} on left side of \?\? does not exist\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^PHPDoc tag @var for variable \$response has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Parameter \#1 \$array of function array_values expects array\, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Parameter \#1 \$description of method Appwrite\\SDK\\Specification\\Format\:\:parseDescription\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Parameter \#1 \$list of method Utopia\\Http\\Http\:\:getResources\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Parameter \#1 \$object of function get_class expects object, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Parameter \#2 \$excludedValues of method Appwrite\\SDK\\Specification\\Format\:\:parseDescription\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - - message: '#^Parameter \#3 \$subject of function str_replace expects array\\|string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - message: '#^Variable \$desc on left side of \?\?\= always exists and is not nullable\.$#' identifier: nullCoalesce.variable @@ -35424,228 +1122,6 @@ parameters: count: 1 path: src/Appwrite/SDK/Specification/Format/OpenAPI3.php - - - message: '#^Binary operation "\." between ''\#/definitions/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 5 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Call to function is_array\(\) with Appwrite\\SDK\\Method will always evaluate to false\.$#' - identifier: function.impossibleType - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''deprecated'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''description'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''enum'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''example'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 26 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''exclude'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''excludeKeys'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''format'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''injections'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''items'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''method'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''namespace'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''optional'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''parameter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''readOnly'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''validator'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''x\-appwrite'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''x\-enum\-name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset ''x\-nullable'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot access property \$value on mixed\.$#' - identifier: property.nonObject - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot call method getCode\(\) on Appwrite\\SDK\\Response\|array\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot call method getFormat\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot call method getList\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot call method getModel\(\) on Appwrite\\SDK\\Response\|array\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot call method getName\(\) on Appwrite\\Utopia\\Response\\Model\|string\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot call method getName\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot call method getType\(\) on Appwrite\\Utopia\\Response\\Model\|string\.$#' - identifier: method.nonObject - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot call method getType\(\) on mixed\.$#' - identifier: method.nonObject - count: 21 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot call method getValidator\(\) on mixed\.$#' - identifier: method.nonObject - count: 3 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot call method getValidators\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Cannot call method isNone\(\) on Appwrite\\Utopia\\Response\\Model\|string\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - message: '#^Class Utopia\\Database\\Validator\\DatetimeValidator not found\.$#' identifier: class.notFound @@ -35664,102 +1140,12 @@ parameters: count: 1 path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 11 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^If condition is always false\.$#' - identifier: if.alwaysFalse - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Match expression does not handle remaining value\: string$#' - identifier: match.unhandled - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Method Appwrite\\SDK\\Specification\\Format\\Swagger2\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Offset ''x\-enum\-keys'' on array\{name\: \(int\|string\), description\: mixed, required\: bool, type\: mixed, x\-example\: mixed, enum\: list, x\-enum\-name\: string\|null, x\-enum\-keys\: array, \.\.\.\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Offset ''x\-global'' on array\{name\: \(int\|string\), description\: mixed, required\: bool, type\: mixed, collectionFormat\: ''multi'', items\: array\{type\: mixed, enum\: list, x\-enum\-name\: string\|null, x\-enum\-keys\: array, format\?\: mixed\}\|array\{type\: mixed, format\?\: mixed\}, x\-example\?\: mixed, default\?\: mixed\}\|array\{name\: \(int\|string\), description\: mixed, required\: bool, type\: mixed, format\?\: mixed, x\-example\?\: mixed, default\?\: mixed\}\|array\{name\: \(int\|string\), description\: mixed, required\: bool, type\: mixed, schema\?\: array\{items\: array\{oneOf\: array\{array\{type\: ''array''\}\}\}\}, x\-example\?\: mixed, default\?\: mixed\}\|array\{name\: \(int\|string\), description\: mixed, required\: bool, type\: mixed, x\-example\: mixed, enum\: list, x\-enum\-name\: string\|null, x\-enum\-keys\: array, \.\.\.\}\|array\{name\: \(int\|string\), description\: mixed, required\: bool, x\-upload\-id\?\: true, type\: mixed, x\-example\?\: mixed, default\?\: mixed\} on left side of \?\? does not exist\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^PHPDoc tag @var for variable \$response has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - message: '#^PHPDoc tag @var with type Appwrite\\SDK\\Method is not subtype of native type \*NEVER\*\.$#' identifier: varTag.nativeType count: 1 path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - message: '#^Parameter \#1 \$array of function array_values expects array\, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Parameter \#1 \$description of method Appwrite\\SDK\\Specification\\Format\:\:parseDescription\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Parameter \#1 \$list of method Utopia\\Http\\Http\:\:getResources\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Parameter \#1 \$object of function get_class expects object, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Parameter \#2 \$excludedValues of method Appwrite\\SDK\\Specification\\Format\:\:parseDescription\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - - message: '#^Parameter \#3 \$subject of function str_replace expects array\\|string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - message: '#^Variable \$additionalMethods in empty\(\) always exists and is always falsy\.$#' identifier: empty.variable @@ -35784,348 +1170,12 @@ parameters: count: 1 path: src/Appwrite/SDK/Specification/Format/Swagger2.php - - - message: '#^Method Appwrite\\SDK\\Specification\\Specification\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/SDK/Specification/Specification.php - - - - message: '#^Parameter \#1 \$expression of static method Cron\\CronExpression\:\:isValidExpression\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Task/Validator/Cron.php - - - - message: '#^Binary operation "\." between ''\#'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Template/Template.php - - - - message: '#^Binary operation "\." between ''\:'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Template/Template.php - - - - message: '#^Binary operation "\." between ''\?'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Template/Template.php - - - - message: '#^Binary operation "\." between mixed and ''\://'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Template/Template.php - - - - message: '#^Binary operation "\." between string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Template/Template.php - - - - message: '#^Method Appwrite\\Template\\Template\:\:fromCamelCaseToDash\(\) has parameter \$input with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Template/Template.php - - - - message: '#^Method Appwrite\\Template\\Template\:\:fromCamelCaseToSnake\(\) has parameter \$input with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Template/Template.php - - - - message: '#^Method Appwrite\\Template\\Template\:\:mergeQuery\(\) has parameter \$query1 with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Template/Template.php - - - - message: '#^Method Appwrite\\Template\\Template\:\:mergeQuery\(\) has parameter \$query2 with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Template/Template.php - - - - message: '#^Method Appwrite\\Template\\Template\:\:parseURL\(\) has parameter \$url with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Template/Template.php - - - - message: '#^Method Appwrite\\Template\\Template\:\:render\(\) has parameter \$useContent with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Template/Template.php - - - - message: '#^Method Appwrite\\Template\\Template\:\:unParseURL\(\) has parameter \$url with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Template/Template.php - - message: '#^PHPDoc tag @var above a method has no effect\.$#' identifier: varTag.misplaced count: 2 path: src/Appwrite/Template/Template.php - - - message: '#^Parameter \#1 \$string of function parse_str expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Template/Template.php - - - - message: '#^Parameter \#1 \$url of function parse_url expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Template/Template.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, list given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Template/Template.php - - - - message: '#^Parameter \#2 \$subject of function preg_match_all expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Template/Template.php - - - - message: '#^Parameter \#3 \$subject of function preg_replace expects array\\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Template/Template.php - - - - message: '#^Parameter \#3 \$subject of function str_replace expects array\\|string, array given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Template/Template.php - - - - message: '#^Parameter \#3 \$subject of function str_replace expects array\\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Template/Template.php - - - - message: '#^Binary operation "\." between ''Mock\: '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Transformation/Adapter/Mock.php - - - - message: '#^Binary operation "\.\=" between mixed and ''\ but returns array\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Usage/Context.php - - - - message: '#^Method Appwrite\\Usage\\Context\:\:getReduce\(\) should return array\ but returns array\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Usage/Context.php - - - - message: '#^Property Appwrite\\Usage\\Context\:\:\$metrics type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Usage/Context.php - - - - message: '#^Property Appwrite\\Usage\\Context\:\:\$reduce type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Usage/Context.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 5 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Binary operation "\." between ''label\:'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Cannot access offset ''confirm'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Cannot access offset ''roles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Cannot access offset ''teamId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Cannot call method getAttribute\(\) on mixed\.$#' - identifier: method.nonObject - count: 5 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Cannot call method getId\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Cannot call method getRoles\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Cannot call method isSet\(\) on mixed\.$#' - identifier: method.nonObject - count: 6 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Method Appwrite\\Utopia\\Database\\Documents\\User\:\:getEmail\(\) should return string\|null but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Method Appwrite\\Utopia\\Database\\Documents\\User\:\:getPhone\(\) should return string\|null but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Method Appwrite\\Utopia\\Database\\Documents\\User\:\:getRoles\(\) has parameter \$authorization with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Method Appwrite\\Utopia\\Database\\Documents\\User\:\:sessionVerify\(\) should return bool\|string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Method Appwrite\\Utopia\\Database\\Documents\\User\:\:tokenVerify\(\) should return Utopia\\Database\\Document\|false but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - message: '#^PHPDoc tag @param has invalid value \(Document \$this\)\: Unexpected token "\$this", expected variable at offset 69 on line 4$#' identifier: phpDoc.parseError @@ -36138,210 +1188,6 @@ parameters: count: 1 path: src/Appwrite/Utopia/Database/Documents/User.php - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Parameter \#1 \$dbFormat of static method Utopia\\Database\\DateTime\:\:formatTz\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:member\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:team\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Parameter \#1 \$roles of method Appwrite\\Utopia\\Database\\Documents\\User\:\:isApp\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Parameter \#2 \$dimension of static method Utopia\\Database\\Helpers\\Role\:\:team\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Parameter \#2 \$hash of method Utopia\\Auth\\Proof\:\:verify\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Unreachable statement \- code above always terminates\.$#' - identifier: deadCode.unreachable - count: 1 - path: src/Appwrite/Utopia/Database/Documents/User.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 11 - path: src/Appwrite/Utopia/Database/RuntimeQuery.php - - - - message: '#^Method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:compile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Database/RuntimeQuery.php - - - - message: '#^Method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:compileCondition\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Database/RuntimeQuery.php - - - - message: '#^Method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:evaluateCondition\(\) has parameter \$condition with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Database/RuntimeQuery.php - - - - message: '#^Method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:evaluateCondition\(\) has parameter \$payload with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Database/RuntimeQuery.php - - - - message: '#^Method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:extractAttributes\(\) has parameter \$attributes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Database/RuntimeQuery.php - - - - message: '#^Method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:extractAttributes\(\) has parameter \$condition with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Database/RuntimeQuery.php - - - - message: '#^Method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:filter\(\) has parameter \$compiled with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Database/RuntimeQuery.php - - - - message: '#^Method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:filter\(\) has parameter \$payload with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Database/RuntimeQuery.php - - - - message: '#^Method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:filter\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Database/RuntimeQuery.php - - - - message: '#^Parameter \#1 \$condition of static method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:evaluateCondition\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: src/Appwrite/Utopia/Database/RuntimeQuery.php - - - - message: '#^Parameter \#1 \$condition of static method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:extractAttributes\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/RuntimeQuery.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Utopia/Database/RuntimeQuery.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Utopia/Database/RuntimeQuery.php - - - - message: '#^Binary operation "\." between ''Attribute \\'''' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Binary operation "\." between ''Attribute key \\'''' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Binary operation "\." between ''Default value for…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 13 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Binary operation "\." between ''Duplicate attribute…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Binary operation "\." between ''Format is only…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Binary operation "\." between ''Invalid \\''array\\''…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Binary operation "\." between ''Invalid \\''required\\''…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Binary operation "\." between ''Invalid \\''signed\\''…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Binary operation "\." between ''Invalid format for…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Binary operation "\." between ''Invalid or missing…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Binary operation "\." between ''Invalid type for…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - message: '#^Call to method isValid\(\) on an unknown class Utopia\\Validator\\Email\.$#' identifier: class.notFound @@ -36354,384 +1200,6 @@ parameters: count: 1 path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - message: '#^Parameter \#1 \$length of class Utopia\\Validator\\Text constructor expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Parameter \#1 \$min of class Utopia\\Validator\\Range constructor expects float\|int, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Parameter \#2 \$max of class Utopia\\Validator\\Range constructor expects float\|int, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Part \$max \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Part \$min \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Part \$size \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Strict comparison using \!\=\= between mixed and null will always evaluate to true\.$#' - identifier: notIdentical.alwaysTrue - count: 3 - path: src/Appwrite/Utopia/Database/Validator/Attributes.php - - - - message: '#^Method Appwrite\\Utopia\\Database\\Validator\\CompoundUID\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Database/Validator/CompoundUID.php - - - - message: '#^Part \$order \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Indexes.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Operation.php - - - - message: '#^Part \$action \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 6 - path: src/Appwrite/Utopia/Database/Validator/Operation.php - - - - message: '#^Part \$value\[''action''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Operation.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 4 - path: src/Appwrite/Utopia/Database/Validator/Operation.php - - - - message: '#^Parameter \#1 \$string of function mb_strlen expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/Validator/ProjectId.php - - - - message: '#^Parameter \#2 \$subject of function preg_match expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/Validator/ProjectId.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Cannot access offset ''attributes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Cannot access offset ''buckets'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Cannot access offset ''console'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Cannot access offset ''databases'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Cannot access offset ''logs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Cannot access offset ''projects'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Parameter \#1 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Parameter \#2 \$idAttributeType of class Utopia\\Database\\Validator\\Query\\Filter constructor expects string, int given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Parameter \#2 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Parameter \#3 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Parameter \#4 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Parameter \#5 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Utopia/Database/Validator/Queries/Base.php - - - - message: '#^Binary operation "\." between mixed and "\\r\\n" results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Fetch/BodyMultipart.php - - - - message: '#^Offset 0 on non\-empty\-list\ on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Utopia/Fetch/BodyMultipart.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Utopia/Request.php - - - - message: '#^Binary operation "\." between mixed and ''\.'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Request.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Request.php - - - - message: '#^Cannot call method getLabel\(\) on Utopia\\Http\\Route\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Utopia/Request.php - - - - message: '#^Cannot call method getMethodName\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Utopia/Request.php - - - - message: '#^Cannot call method getNamespace\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Utopia/Request.php - - - - message: '#^Cannot call method getRoles\(\) on Utopia\\Database\\Validator\\Authorization\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Utopia/Request.php - - - - message: '#^Method Appwrite\\Utopia\\Request\:\:getHeader\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Utopia/Request.php - - - - message: '#^Method Appwrite\\Utopia\\Request\:\:getParams\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Request.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Utopia/Request.php - - - - message: '#^Part \$value \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Utopia/Request.php - - - - message: '#^Dead catch \- Exception is never thrown in the try block\.$#' - identifier: catch.neverThrown - count: 1 - path: src/Appwrite/Utopia/Request/Filter.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filter\:\:__construct\(\) has parameter \$params with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filter.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filter\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filter.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filter\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filter.php - - - - message: '#^Property Appwrite\\Utopia\\Request\\Filter\:\:\$params type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filter.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V16\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V16.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V16\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V16.php - - - - message: '#^Parameter \#1 \$runtime of method Appwrite\\Utopia\\Request\\Filters\\V16\:\:getCommands\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V16.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V17\:\:convertOldQueries\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V17\:\:convertOldQueries\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V17\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V17\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V17.php - - - - message: '#^Parameter \#1 \$filter of method Appwrite\\Utopia\\Request\\Filters\\V17\:\:parseQuery\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V17.php - - - - message: '#^Parameter \#2 \$attribute of class Utopia\\Database\\Query constructor expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Utopia/Request/Filters/V17.php - - - - message: '#^Parameter \#2 \$needle of function str_starts_with expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Utopia/Request/Filters/V17.php - - - - message: '#^Parameter \$values of class Utopia\\Database\\Query constructor expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V17.php - - message: '#^Unsafe call to private method Appwrite\\Utopia\\Request\\Filters\\V17\:\:appendSymbol\(\) through static\:\:\.$#' identifier: staticClassAccess.privateMethod @@ -36744,306 +1212,6 @@ parameters: count: 1 path: src/Appwrite/Utopia/Request/Filters/V17.php - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V18\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V18.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V18\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V18.php - - - - message: '#^Cannot access offset ''attribute'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Utopia/Request/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V19\:\:convertQueryAttribute\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V19\:\:convertQueryAttribute\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V19\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V19\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V19.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V19.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Binary operation "\." between mixed and ''\.\*'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Cannot access offset ''relatedCollection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V20\:\:getRelatedCollectionKeys\(\) has parameter \$visited with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V20\:\:getRelatedCollectionKeys\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V20\:\:manageSelectQueries\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V20\:\:manageSelectQueries\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V20\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V20\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Offset ''selections'' on array\{filters\: array\, selections\: array\, limit\: int\|null, offset\: int\|null, orderAttributes\: array\, orderTypes\: array\, cursor\: Utopia\\Database\\Document\|null, cursorDirection\: string\|null\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Parameter \#1 \$attributes of static method Utopia\\Database\\Query\:\:select\(\) expects array\, list given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Parameter \#1 \$databaseId of method Appwrite\\Utopia\\Request\\Filters\\V20\:\:getRelatedCollectionKeys\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Parameter \#1 \$queries of static method Utopia\\Database\\Query\:\:parseQueries\(\) expects array\, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Parameter \#2 \$collectionId of method Appwrite\\Utopia\\Request\\Filters\\V20\:\:getRelatedCollectionKeys\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Parameter \#2 \$id of method Utopia\\Database\\Database\:\:getDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Parameter \#3 \$prefix of method Appwrite\\Utopia\\Request\\Filters\\V20\:\:getRelatedCollectionKeys\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V20.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V21\:\:convertSpecs\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V21.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V21\:\:convertSpecs\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V21.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V21\:\:convertVersionToTypeAndReference\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V21.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V21\:\:convertVersionToTypeAndReference\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V21.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V21\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V21.php - - - - message: '#^Method Appwrite\\Utopia\\Request\\Filters\\V21\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Request/Filters/V21.php - - - - message: '#^Binary operation "\." between ''Missing model for…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Cannot access offset ''sensitive'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Cannot call method getRoles\(\) on Utopia\\Database\\Validator\\Authorization\|null\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Method Appwrite\\Utopia\\Response\:\:applyFilters\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Method Appwrite\\Utopia\\Response\:\:applyFilters\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Method Appwrite\\Utopia\\Response\:\:getFilters\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Method Appwrite\\Utopia\\Response\:\:getPayload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Method Appwrite\\Utopia\\Response\:\:multipart\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Method Appwrite\\Utopia\\Response\:\:output\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Method Appwrite\\Utopia\\Response\:\:showSensitive\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Method Appwrite\\Utopia\\Response\:\:showSensitive\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Method Appwrite\\Utopia\\Response\:\:yaml\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response.php - - message: '#^PHPDoc tag @param has invalid value \(callable The callback to show sensitive information for\)\: Unexpected token "The", expected variable at offset 91 on line 4$#' identifier: phpDoc.parseError @@ -37056,8058 +1224,24 @@ parameters: count: 1 path: src/Appwrite/Utopia/Response.php - - - message: '#^Parameter \#1 \$data of method Appwrite\\Utopia\\Response\:\:multipart\(\) expects array, array\|stdClass given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Parameter \#1 \$data of method Appwrite\\Utopia\\Response\:\:yaml\(\) expects array, array\|stdClass given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Parameter \#1 \$key of method Appwrite\\Utopia\\Response\:\:getModel\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Parameter \#1 \$key of static method Appwrite\\Utopia\\Response\:\:hasModel\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Parameter \#2 \$model of method Appwrite\\Utopia\\Response\:\:output\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Property Appwrite\\Utopia\\Response\:\:\$payload type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filter\:\:handleList\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filter.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filter\:\:handleList\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filter.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filter\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filter.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filter\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filter.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Utopia/Response/Filters/ListSelection.php - - - - message: '#^Cannot call method getValues\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: src/Appwrite/Utopia/Response/Filters/ListSelection.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\ListSelection\:\:__construct\(\) has parameter \$selectQueries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/ListSelection.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\ListSelection\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/ListSelection.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\ListSelection\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/ListSelection.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: src/Appwrite/Utopia/Response/Filters/ListSelection.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Binary operation "\+\=" between mixed and float\|int results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Expression on left side of \?\? is not nullable\.$#' - identifier: nullCoalesce.expr - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parse\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parseDeployment\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parseDeployment\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parseExecution\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parseExecution\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parseFunction\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parseFunction\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parseProject\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parseProject\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parseVariable\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parseVariable\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parseDeployment\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parseExecution\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parseFunction\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parseProject\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V16\:\:parseVariable\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Parameter \#1 \$expression of class Cron\\CronExpression constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Parameter \#1 \$string of function ucfirst expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Unary operation "\+" on mixed results in an error\.$#' - identifier: unaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V16.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parse\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseMembership\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseMembership\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseProject\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseProject\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseSession\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseSession\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseToken\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseToken\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseUser\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseUser\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseWebhook\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseWebhook\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseMembership\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseProject\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseSession\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseUser\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V17\:\:parseWebhook\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V17.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V18\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V18.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V18\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V18.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V18\:\:parse\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V18.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V18\:\:parseExecution\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V18.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V18\:\:parseExecution\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V18.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V18\:\:parseFunction\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V18.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V18\:\:parseFunction\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V18.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V18\:\:parseProject\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V18.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V18\:\:parseProject\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V18.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V18\:\:parseRuntime\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V18.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V18\:\:parseRuntime\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V18.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parse\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseDeployment\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseDeployment\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseFunction\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseFunction\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseMigration\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseMigration\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseProject\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseProject\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseProviderRepository\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseProviderRepository\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseProxyRule\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseProxyRule\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseTemplateVariable\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseTemplateVariable\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseUsageFunction\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseUsageFunction\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseUsageFunctions\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseUsageFunctions\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseVariable\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseVariable\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseDeployment\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseFunction\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseMigration\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseProject\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseProxyRule\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V19\:\:parseVariable\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V19.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V20\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V20.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V20\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V20.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V20\:\:parseDocument\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V20.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V20\:\:parseDocument\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V20.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V20\:\:parseDocument\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V20.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V21\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V21.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V21\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V21.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V21\:\:parseFunction\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V21.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V21\:\:parseFunction\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V21.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V21\:\:parseSite\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V21.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V21\:\:parseSite\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V21.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V21\:\:parseSpecs\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V21.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Filters\\V21\:\:parseSpecs\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V21.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V21\:\:parseFunction\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V21.php - - - - message: '#^Parameter \#1 \$content of method Appwrite\\Utopia\\Response\\Filters\\V21\:\:parseSite\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Filters/V21.php - - - - message: '#^Cannot access offset ''readOnly'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Model\:\:addRule\(\) has parameter \$options with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Model\:\:getReadonlyFields\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Model\:\:getRequired\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Model\:\:getRules\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\:\:\$rules type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Model\\Any\:\:getSampleData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/Any.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\Attribute\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/Attribute.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributeBoolean\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeBoolean.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributeDatetime\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeDatetime.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributeEmail\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeEmail.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributeEnum\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeEnum.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributeFloat\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeFloat.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributeIP\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeIP.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributeInteger\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeInteger.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributeLine\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeLine.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributeLongtext\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeLongtext.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributeMediumtext\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeMediumtext.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributePoint\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributePoint.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributePolygon\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributePolygon.php - - - - message: '#^Cannot access offset ''onDelete'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeRelationship.php - - - - message: '#^Cannot access offset ''relatedCollection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeRelationship.php - - - - message: '#^Cannot access offset ''relationType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeRelationship.php - - - - message: '#^Cannot access offset ''side'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeRelationship.php - - - - message: '#^Cannot access offset ''twoWay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeRelationship.php - - - - message: '#^Cannot access offset ''twoWayKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeRelationship.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributeRelationship\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeRelationship.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributeString\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeString.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributeText\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeText.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributeURL\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeURL.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\AttributeVarchar\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/AttributeVarchar.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\Column\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/Column.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnBoolean\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnBoolean.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnDatetime\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnDatetime.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnEmail\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnEmail.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnEnum\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnEnum.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnFloat\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnFloat.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnIP\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnIP.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnInteger\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnInteger.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnLine\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnLine.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnLongtext\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnLongtext.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnMediumtext\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnMediumtext.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnPoint\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnPoint.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnPolygon\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnPolygon.php - - - - message: '#^Cannot access offset ''onDelete'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnRelationship.php - - - - message: '#^Cannot access offset ''relatedCollection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnRelationship.php - - - - message: '#^Cannot access offset ''relationType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnRelationship.php - - - - message: '#^Cannot access offset ''side'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnRelationship.php - - - - message: '#^Cannot access offset ''twoWay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnRelationship.php - - - - message: '#^Cannot access offset ''twoWayKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnRelationship.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnRelationship\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnRelationship.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnString\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnString.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnText\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnText.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnURL\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnURL.php - - - - message: '#^Property Appwrite\\Utopia\\Response\\Model\\ColumnVarchar\:\:\$conditions type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/ColumnVarchar.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Model\\Document\:\:getSampleData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/Document.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: src/Appwrite/Utopia/Response/Model/Migration.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Migration.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Model/Migration.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Model\\Preferences\:\:getSampleData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/Preferences.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 5 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Binary operation "\." between mixed and '' auth method status'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Binary operation "\." between mixed and '' service status'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Binary operation "\." between mixed and ''Appid'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Binary operation "\." between mixed and ''Enabled'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Binary operation "\." between mixed and ''Secret'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''host'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''invalidateSessions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''limit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''maxSessions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''membershipsMfa'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''membershipsUserEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''membershipsUserName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''mockNumbers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''optional'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''password'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''passwordDictionary'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''passwordHistory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''personalDataCheck'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''port'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''replyTo'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''secure'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''senderEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''senderName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''sessionAlerts'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset ''username'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Parameter \#1 \$string of function ucfirst expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Appwrite/Utopia/Response/Model/Project.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Model/ResourceToken.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Model/ResourceToken.php - - - - message: '#^Parameter \#1 \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Utopia/Response/Model/ResourceToken.php - - - - message: '#^Cannot access offset ''relatedCollection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Utopia/Response/Model/Table.php - - - - message: '#^Cannot access offset ''relatedTable'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Utopia/Response/Model/Table.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Model\\Table\:\:remapNestedRelatedCollections\(\) has parameter \$columns with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/Table.php - - - - message: '#^Method Appwrite\\Utopia\\Response\\Model\\Table\:\:remapNestedRelatedCollections\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Utopia/Response/Model/Table.php - - message: '#^PHPDoc tag @return with type string is incompatible with native type Utopia\\Database\\Document\.$#' identifier: return.phpDocType count: 1 path: src/Appwrite/Utopia/Response/Model/User.php - - - message: '#^Binary operation "\." between ''/images/vcs/status\-'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Binary operation "\." between ''\[Authorize\]\('' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Binary operation "\." between ''\[Preview URL\]\('' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Binary operation "\." between ''\[View Logs\]\(http\://''\|''\[View Logs\]\(https\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Binary operation "\." between ''http\://''\|''https\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Cannot access offset ''action'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Cannot access offset ''buildStatus'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Cannot access offset ''deploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Cannot access offset ''previewUrl'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Cannot access offset ''projectId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Cannot access offset ''projectName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Cannot access offset ''region'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Cannot access offset ''resourceId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Cannot access offset ''resourceName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Cannot access offset ''resourceType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Cannot access offset ''url'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Match expression does not handle remaining value\: mixed$#' - identifier: match.unhandled - count: 2 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Method Appwrite\\Vcs\\Comment\:\:__construct\(\) has parameter \$platform with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Method Appwrite\\Vcs\\Comment\:\:addBuild\(\) has parameter \$action with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Offset 0 on non\-empty\-list\ on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Parameter \#1 \$key of function array_key_exists expects int\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Parameter \#1 \$string of function base64_encode expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Parameter \#1 \$string of function urlencode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Part \$function\[''name''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Part \$project\[''name''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Part \$site\[''name''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Part \$tip \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 5 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Property Appwrite\\Vcs\\Comment\:\:\$tips type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Appwrite/Vcs/Comment.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Executor/Executor.php - - - - message: '#^Cannot access offset ''headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Executor/Executor.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Executor/Executor.php - - - - message: '#^Cannot access offset ''startTime'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Executor/Executor.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: src/Executor/Executor.php - - - - message: '#^Cannot access offset ''statusCode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: src/Executor/Executor.php - - - - message: '#^Cannot assign offset ''body'' to array\|string\.$#' - identifier: offsetAssign.dimType - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:call\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:call\(\) has parameter \$params with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:call\(\) never returns string so it can be removed from the return type\.$#' - identifier: return.unusedType - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:call\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:createCommand\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:createExecution\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:createExecution\(\) has parameter \$variables with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:createExecution\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:createExecution\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:createRuntime\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:createRuntime\(\) has parameter \$variables with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:deleteRuntime\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:flatten\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:flatten\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:getLogs\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Method Executor\\Executor\:\:parseCookie\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Offset ''body'' might not exist on array\|string\.$#' - identifier: offsetAccess.notFound - count: 6 - path: src/Executor/Executor.php - - - - message: '#^Offset ''headers'' might not exist on array\|string\.$#' - identifier: offsetAccess.notFound - count: 4 - path: src/Executor/Executor.php - - - - message: '#^Parameter \#1 \$haystack of function str_contains expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Parameter \#1 \$message of class Exception constructor expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Executor/Executor.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Executor/Executor.php - - - - message: '#^Parameter \#1 \$value of function floatval expects array\|bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: src/Executor/Executor.php - - - - message: '#^Parameter \#1 \$value of function intval expects array\|bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Parameter \#2 \$code of class Exception constructor expects int, mixed given\.$#' - identifier: argument.type - count: 4 - path: src/Executor/Executor.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects 0\|2, false given\.$#' - identifier: argument.type - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects array\|string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects bool, int given\.$#' - identifier: argument.type - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects non\-empty\-string\|null, string given\.$#' - identifier: argument.type - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Parameter \#7 \$timeout of method Executor\\Executor\:\:call\(\) expects int, string given\.$#' - identifier: argument.type - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Property Executor\\Executor\:\:\$endpoint \(string\) does not accept string\|null\.$#' - identifier: assign.propertyType - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Property Executor\\Executor\:\:\$headers type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: src/Executor/Executor.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: tests/e2e/Client.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Client.php - - - - message: '#^Method Tests\\E2E\\Client\:\:call\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Client.php - - - - message: '#^Method Tests\\E2E\\Client\:\:call\(\) has parameter \$params with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Client.php - - - - message: '#^Method Tests\\E2E\\Client\:\:call\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Client.php - - - - message: '#^Method Tests\\E2E\\Client\:\:flatten\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Client.php - - - - message: '#^Method Tests\\E2E\\Client\:\:flatten\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Client.php - - - - message: '#^Method Tests\\E2E\\Client\:\:parseCookie\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Client.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Client.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Client.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects 0\|2, false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Client.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects array\|string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Client.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects bool, int given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Client.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects non\-empty\-string\|null, string given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Client.php - - - - message: '#^Parameter \#3 \$value of function curl_setopt expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Client.php - - - - message: '#^Property Tests\\E2E\\Client\:\:\$headers type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Client.php - - - - message: '#^Binary operation "\." between ''/databases/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 13 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 5 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Binary operation "\." between ''/tablesdb/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 19 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 27 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 28 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:createBucket\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:createCollectionOrTable\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:testAbuseCreateDocumentCollectionsAPI\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:testAbuseCreateDocumentTablesAPI\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:testAbuseCreateFile\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:testAbuseDeleteDocumentCollectionsAPI\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:testAbuseDeleteDocumentTablesAPI\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:testAbuseDeleteFile\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:testAbuseUpdateDocumentCollectionsAPI\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:testAbuseUpdateDocumentTablesAPI\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:testAbuseUpdateFile\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\General\\AbuseTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Property Tests\\E2E\\General\\AbuseTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/AbuseTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Binary operation "\." between ''/users/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Cannot access offset ''content\-length'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Cannot access offset ''longValue'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Cannot access offset ''transfer\-encoding'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 18 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Method Tests\\E2E\\General\\CompressionTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Method Tests\\E2E\\General\\CompressionTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Method Tests\\E2E\\General\\CompressionTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Method Tests\\E2E\\General\\CompressionTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Method Tests\\E2E\\General\\CompressionTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Method Tests\\E2E\\General\\CompressionTest\:\:testImageResponse\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Method Tests\\E2E\\General\\CompressionTest\:\:testLargeResponse\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Method Tests\\E2E\\General\\CompressionTest\:\:testSmallResponse\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Method Tests\\E2E\\General\\CompressionTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Parameter \#1 \$value of function intval expects array\|bool\|float\|int\|resource\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Property Tests\\E2E\\General\\CompressionTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Property Tests\\E2E\\General\\CompressionTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/CompressionTest.php - - - - message: '#^Cannot access offset ''access\-control\-allow\-credentials'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''access\-control\-allow\-headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''access\-control\-allow\-methods'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''access\-control\-allow\-origin'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''access\-control\-expose\-headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''allowedHeaders'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''allowedMethods'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''client\-flutter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''client\-web'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''console\-cli'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''console\-web'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''exposedHeaders'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''location'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''server'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''server\-nodejs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''server\-php'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''server\-python'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''server\-ruby'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 13 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Cannot call method setEndpoint\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Method Tests\\E2E\\General\\HTTPTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Method Tests\\E2E\\General\\HTTPTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Method Tests\\E2E\\General\\HTTPTest\:\:testAcmeChallenge\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Method Tests\\E2E\\General\\HTTPTest\:\:testConsoleRedirect\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Method Tests\\E2E\\General\\HTTPTest\:\:testCors\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Method Tests\\E2E\\General\\HTTPTest\:\:testDefaultOAuth2\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Method Tests\\E2E\\General\\HTTPTest\:\:testHumans\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Method Tests\\E2E\\General\\HTTPTest\:\:testOptions\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Method Tests\\E2E\\General\\HTTPTest\:\:testPreflight\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Method Tests\\E2E\\General\\HTTPTest\:\:testRobots\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Method Tests\\E2E\\General\\HTTPTest\:\:testVersions\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Parameter \#2 \$array of function implode expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/General/HTTPTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/General/HooksTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/General/HooksTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HooksTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/General/HooksTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HooksTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/HooksTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 11 - path: tests/e2e/General/HooksTest.php - - - - message: '#^Cannot call method setEndpoint\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/e2e/General/HooksTest.php - - - - message: '#^Method Tests\\E2E\\General\\HooksTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/HooksTest.php - - - - message: '#^Method Tests\\E2E\\General\\HooksTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/HooksTest.php - - - - message: '#^Method Tests\\E2E\\General\\HooksTest\:\:testProjectHooks\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/HooksTest.php - - - - message: '#^Method Tests\\E2E\\General\\HooksTest\:\:testUserHooks\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/HooksTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/General/PingTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/PingTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/PingTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/PingTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/PingTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/General/PingTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/PingTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/General/PingTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/General/PingTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/General/PingTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/PingTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/General/PingTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 12 - path: tests/e2e/General/PingTest.php - - - - message: '#^Method Tests\\E2E\\General\\PingTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/PingTest.php - - - - message: '#^Method Tests\\E2E\\General\\PingTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/PingTest.php - - - - message: '#^Method Tests\\E2E\\General\\PingTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/PingTest.php - - - - message: '#^Method Tests\\E2E\\General\\PingTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/PingTest.php - - - - message: '#^Method Tests\\E2E\\General\\PingTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/PingTest.php - - - - message: '#^Method Tests\\E2E\\General\\PingTest\:\:testPing\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/PingTest.php - - - - message: '#^Method Tests\\E2E\\General\\PingTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/PingTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertNotContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/General/PingTest.php - - - - message: '#^Property Tests\\E2E\\General\\PingTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/PingTest.php - - message: '#^Attribute class Tests\\E2E\\General\\Retry does not exist\.$#' identifier: attribute.notFound count: 1 path: tests/e2e/General/UsageTest.php - - - message: '#^Binary operation "\*" between mixed and 1000 results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\+" between int\<0, max\> and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\+" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\+\=" between \(float\|int\) and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\+\=" between mixed and 1 results in an error\.$#' - identifier: assignOp.invalid - count: 4 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\-\=" between \(float\|int\) and mixed results in an error\.$#' - identifier: assignOp.invalid - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''/databases/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 11 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''/functions/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 10 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''/sites/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''/storage/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''/tablesdb/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 7 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''/users/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''Deployment build…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''Setup deployment…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''Setup function…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''Setup site failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''http\://'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 21 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertNotNull\(\) with string will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 47 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''\$updatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''activate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''buckets'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''buildLogs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''builds'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''buildsFailed'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''buildsFailedTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''buildsMbSeconds'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''buildsMbSecondsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''buildsSuccess'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''buildsSuccessTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''buildsTime'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''collections'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''databases'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''databasesTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''date'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''deploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''deployments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''deploymentsStorage'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''deploymentsStorageTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''documents'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''documentsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''domain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''executions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''executionsMbSeconds'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''executionsMbSecondsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''executionsTime'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''executionsTimeTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''executionsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''files'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''filesStorageTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''functionId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''functions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''inbound'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''network'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''outbound'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''range'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''requests'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 15 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''rows'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''rowsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''rules'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''sessions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''sha'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''sites'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''sizeOriginal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 56 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''storage'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''tables'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''users'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 31 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 21 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 124 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Constant Tests\\E2E\\General\\UsageTest\:\:WAIT is unused\.$#' - identifier: classConstant.unused - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:callWithAuthRetry\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:callWithAuthRetry\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:getConsoleHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:getDeploymentDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:getExecution\(\) has parameter \$executionId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:getFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:getLog\(\) has parameter \$logId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:getSiteDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:getTemplate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:getTemplateSite\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:helperGetLatestCommit\(\) should return string\|null but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:listDeployments\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:listDeploymentsSite\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:listLogs\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:setupDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:setupDeploymentSite\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:setupDuplicateDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:setupDuplicateDeploymentSite\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:setupFunction\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:setupFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:setupSite\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:setupSiteDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testCustomDomainsFunctionStats\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testDatabaseStatsCollectionsAPI\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testDatabaseStatsCollectionsAPI\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testDatabaseStatsTablesAPI\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testDatabaseStatsTablesAPI\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testFunctionsStats\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testFunctionsStats\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testPrepareDatabaseStatsCollectionsAPI\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testPrepareDatabaseStatsCollectionsAPI\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testPrepareDatabaseStatsTablesAPI\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testPrepareDatabaseStatsTablesAPI\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testPrepareFunctionsStats\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testPrepareFunctionsStats\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testPrepareSitesStats\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testPrepareStorageStats\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testPrepareStorageStats\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testPrepareUsersStats\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testSitesStats\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testSitesStats\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testStorageStats\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testStorageStats\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testUsersStats\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:testUsersStats\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Method Tests\\E2E\\General\\UsageTest\:\:validateDates\(\) has parameter \$metrics with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Parameter \#1 \$array of function array_key_last expects array, mixed given\.$#' - identifier: argument.type - count: 21 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\General\\UsageTest\:\:setupDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Parameter \#1 \$metrics of method Tests\\E2E\\General\\UsageTest\:\:validateDates\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 21 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 18 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Parameter \#2 \$datetime of static method DateTime\:\:createFromFormat\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\General\\UsageTest\:\:getDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\General\\UsageTest\:\:getDeploymentSite\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Property Tests\\E2E\\General\\UsageTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Property Tests\\E2E\\General\\UsageTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/General/UsageTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Cannot access offset ''X\-Appwrite\-Webhook\-Project\-Id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Cannot access offset ''a_session_console'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Cannot access offset ''address'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Cannot access offset ''to'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 6 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:assertLastRequest\(\) has parameter \$timeoutMs with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:assertLastRequest\(\) has parameter \$waitMs with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:assertLastRequest\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:assertLastRequest\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:decodeRequestData\(\) has parameter \$request with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:decodeRequestData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:extractQueryParamsFromEmailLink\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getConsoleVariables\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getLastEmail\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getLastEmail\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getLastEmailByAddress\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getLastEmailByAddress\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getLastRequest\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getLastRequestForProject\(\) has parameter \$queryParams with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getLastRequestForProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getMaxIndexLength\(\) should return int but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getNumberOfRetries\(\) should return int but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getRoot\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getSupportForAttributeResizing\(\) should return bool but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getSupportForFulltextWildcard\(\) should return bool but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getSupportForIntegerIds\(\) should return bool but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getSupportForMultipleFulltextIndexes\(\) should return bool but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getSupportForOperators\(\) should return bool but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getSupportForRelationships\(\) should return bool but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getSupportForSchemas\(\) should return bool but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getSupportForSpatialIndexNull\(\) should return bool but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getSupportForSpatials\(\) should return bool but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Method Tests\\E2E\\Scopes\\Scope\:\:getUser\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Parameter \#1 \$haystack of function strpos expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, string\|false given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Parameter \#1 \$projectId of method Tests\\E2E\\Scopes\\Scope\:\:getLastRequestForProject\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Parameter \#1 \$request of method Tests\\E2E\\Scopes\\Scope\:\:decodeRequestData\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Parameter \#1 \$string of function substr expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Parameter \#2 \$timeoutMs of method Tests\\E2E\\Scopes\\Scope\:\:assertEventually\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Parameter \#3 \$waitMs of method Tests\\E2E\\Scopes\\Scope\:\:assertEventually\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 4 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Property Tests\\E2E\\Scopes\\Scope\:\:\$consoleVariables type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Property Tests\\E2E\\Scopes\\Scope\:\:\$root type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Property Tests\\E2E\\Scopes\\Scope\:\:\$user type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Static property Tests\\E2E\\Scopes\\Scope\:\:\$consoleVariables \(array\|null\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 2 - path: tests/e2e/Scopes/Scope.php - - - - message: '#^Binary operation "\." between ''/teams/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''New login detected…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''OTP for '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 10 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''accessedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''clientIp'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''clientName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''emailVerification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''expire'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''identifier'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''ip'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''labels'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''logs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''phrase'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''registration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 35 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''targets'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''text'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 36 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Cannot call method setEndpoint\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountConsoleClientTest\:\:testCreateAccount\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Offset 0 on array\{list\\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 2 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Parameter \#1 \$needle of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Parameter \#1 \$needle of method PHPUnit\\Framework\\Assert\:\:assertStringContainsStringIgnoringCase\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsStringIgnoringCase\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringNotContainsStringIgnoringCase\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Parameter \#2 \$subject of function preg_match_all expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Account/AccountConsoleClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''"'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/account/sessions/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/account/targets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 17 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/users/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 10 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Account…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Attempt 1\: Phone…''\|''Attempt 2\: Phone…''\|''Attempt 3\: Phone…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Email not found for…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''New login detected…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''OTP for '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Password Reset for '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Reset your '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Sign in to '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Verify your email…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 121 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 19 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''secret\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''userId\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between mixed and '' Login'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between mixed and ''x'' results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 92 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 59 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''User\-Agent'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''X\-Key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''X\-Username'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''accessedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''authPhone'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''clientCode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''clientEngine'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''clientIp'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''clientName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''clientType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''clientVersion'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''countryCode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''countryName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''current'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''deviceBrand'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''deviceModel'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''deviceName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''emailVerification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''event'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''expire'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''expired'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''factors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''from'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''identifier'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''ip'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''jwt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''labels'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''logs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''osCode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''osName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''osVersion'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''phone'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''phoneVerification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''phrase'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''prefKey1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''prefKey2'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''provider'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''providerAccessToken'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''providerAccessTokenExpiry'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''providerRefreshToken'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''recoveryCodes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''registration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''result'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 28 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''sessions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 24 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''set\-cookie'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 232 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''subject'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''targets'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''text'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''time'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''to'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 19 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''users'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''x\-fallback\-cookies'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset ''x\-ratelimit\-remaining'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 30 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 258 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Cannot call method setEndpoint\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method PHPUnit\\Framework\\Assert\:\:assertEquals\(\) invoked with named argument \$actual, but it''s not allowed because of @no\-named\-arguments\.$#' - identifier: argument.named - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:createAnonymousSession\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:createFreshAccountWithSession\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccount\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccount\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithRecovery\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithRecovery\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithSession\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithSession\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithUpdatedEmail\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithUpdatedEmail\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithUpdatedName\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithUpdatedName\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithUpdatedPassword\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithUpdatedPassword\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithUpdatedPrefs\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithUpdatedPrefs\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithVerification\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithVerification\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithVerifiedEmail\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupAccountWithVerifiedEmail\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupMagicUrl\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupMagicUrl\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupMagicUrlSession\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupMagicUrlSession\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupPhoneAccount\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupPhoneAccount\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupPhoneConvertedToPassword\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupPhoneConvertedToPassword\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupPhoneSession\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupPhoneSession\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupPhoneUpdated\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupPhoneUpdated\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupPhoneVerification\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:setupPhoneVerification\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:testCreateAccount\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Offset 0 on array\{list\\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Offset 0 on non\-empty\-list\ on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#1 \$address of method Tests\\E2E\\Scopes\\Scope\:\:getLastEmailByAddress\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#1 \$dbFormat of static method Utopia\\Database\\DateTime\:\:formatTz\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#1 \$haystack of function strpos expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#1 \$html of method Tests\\E2E\\Scopes\\Scope\:\:extractQueryParamsFromEmailLink\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#1 \$needle of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#1 \$needle of method PHPUnit\\Framework\\Assert\:\:assertStringContainsStringIgnoringCase\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#1 \$projectId of method Tests\\E2E\\Scopes\\Scope\:\:getLastRequestForProject\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#1 \$string of function substr expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#1 \$string of function trim expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#1 \$string of function urlencode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 9 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#2 \$datetime of static method DateTime\:\:createFromFormat\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsStringIgnoringCase\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 12 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringNotContainsStringIgnoringCase\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#2 \$subject of function preg_match_all expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Parameter \#3 \$subject of function str_replace expects array\\|string, float given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 65 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$accountData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$magicUrlData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$magicUrlSessionData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$phoneData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$phonePasswordData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$phoneSessionData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$phoneUpdatedData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$phoneVerificationData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$recoveryData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$sessionData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$updatedEmailData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$updatedNameData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$updatedPasswordData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$updatedPrefsData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$verificationData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomClientTest\:\:\$verifiedData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/users/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Binary operation "\." between ''OTP for '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Binary operation "\." between ''secret\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Binary operation "\." between ''userId\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Binary operation "\." between mixed and '' Login'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Binary operation "\." between mixed and ''x'' results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 19 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''accessedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''clientIp'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''emailVerification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''expire'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''identifier'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''ip'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''labels'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''phrase'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''registration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 46 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''targets'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''text'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 50 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Cannot call method setEndpoint\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:setupAccount\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:setupAccount\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:setupAccountWithSession\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:setupAccountWithSession\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:setupMagicUrl\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:setupMagicUrl\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:testCreateAccount\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Offset 0 on array\{list\\} on left side of \?\? always exists and is not nullable\.$#' - identifier: nullCoalesce.offset - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Parameter \#1 \$haystack of function strpos expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Parameter \#1 \$needle of method PHPUnit\\Framework\\Assert\:\:assertStringContainsStringIgnoringCase\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Parameter \#1 \$string of function substr expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Parameter \#1 \$string of function urlencode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Parameter \#2 \$datetime of static method DateTime\:\:createFromFormat\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsStringIgnoringCase\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringNotContainsStringIgnoringCase\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Parameter \#2 \$subject of function preg_match_all expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 12 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:\$accountData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:\$magicUrlData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Account\\AccountCustomServerTest\:\:\$sessionData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Account/AccountCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Cannot access offset ''content\-disposition'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Cannot access offset ''content\-type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 41 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 99 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 99 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsConsoleClientTest\:\:testGetBrowser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsConsoleClientTest\:\:testGetCreditCard\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsConsoleClientTest\:\:testGetFavicon\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsConsoleClientTest\:\:testGetFlag\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsConsoleClientTest\:\:testGetImage\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsConsoleClientTest\:\:testGetInitials\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsConsoleClientTest\:\:testGetQR\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsConsoleClientTest\:\:testGetScreenshot\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsConsoleClientTest\:\:testGetScreenshotComparison\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsConsoleClientTest\:\:testInitialImage\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsConsoleClientTest\:\:testSpecialCharsInitalImage\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$image of method Imagick\:\:readImageBlob\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$actualImageBlob of method Tests\\E2E\\Scopes\\Scope\:\:assertSamePixels\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Avatars/AvatarsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Cannot access offset ''content\-disposition'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Cannot access offset ''content\-type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 41 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 106 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 107 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:testGetBrowser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:testGetCreditCard\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:testGetFavicon\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:testGetFlag\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:testGetImage\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:testGetInitials\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:testGetQR\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:testGetScreenshot\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:testGetScreenshotComparison\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:testInitialImage\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:testSpecialCharsInitalImage\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Parameter \#1 \$image of method Imagick\:\:readImageBlob\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Parameter \#2 \$actualImageBlob of method Tests\\E2E\\Scopes\\Scope\:\:assertSamePixels\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Avatars\\AvatarsCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Cannot access offset ''content\-disposition'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Cannot access offset ''content\-type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 41 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 106 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 107 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:testGetBrowser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:testGetCreditCard\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:testGetFavicon\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:testGetFlag\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:testGetImage\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:testGetInitials\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:testGetQR\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:testGetScreenshot\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:testGetScreenshotComparison\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:testInitialImage\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:testSpecialCharsInitalImage\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Parameter \#1 \$image of method Imagick\:\:readImageBlob\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Parameter \#2 \$actualImageBlob of method Tests\\E2E\\Scopes\\Scope\:\:assertSamePixels\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Avatars\\AvatarsCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Avatars/AvatarsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''_APP_ASSISTANT_ENABLED'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''_APP_COMPUTE_BUILD_TIMEOUT'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''_APP_COMPUTE_SIZE_LIMIT'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''_APP_DB_ADAPTER'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''_APP_DOMAINS_NAMESERVERS'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''_APP_DOMAIN_ENABLED'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''_APP_DOMAIN_FUNCTIONS'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''_APP_DOMAIN_SITES'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''_APP_DOMAIN_TARGET_A'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''_APP_DOMAIN_TARGET_AAAA'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''_APP_DOMAIN_TARGET_CAA'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''_APP_DOMAIN_TARGET_CNAME'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''_APP_OPTIONS_FORCE_HTTPS'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''_APP_STORAGE_LIMIT'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''_APP_VCS_ENABLED'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ConsoleConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ConsoleConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Console/ConsoleConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 9 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ConsoleCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ConsoleCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ConsoleCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ConsoleCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ConsoleCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ConsoleCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Console\\ConsoleCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 9 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ConsoleCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ConsoleCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ConsoleCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ConsoleCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ConsoleCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ConsoleCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Console\\ConsoleCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Console\\ConsoleCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Console/ConsoleCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Console/ModeTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Console/ModeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ModeTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Console/ModeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Console\\ModeTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Console/ModeTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 5 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Binary operation "\." between ''/databases/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 43 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 48 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''attributes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''encrypt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''longtext_field'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''mediumtext_field'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 58 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''text_array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''text_field'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''text_required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''text_with_default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''varchar_array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''varchar_field'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''varchar_required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''varchar_with_default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 75 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Legacy\\DatabasesStringTypesTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Legacy\\DatabasesStringTypesTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Legacy\\DatabasesStringTypesTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Legacy\\DatabasesStringTypesTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Legacy\\DatabasesStringTypesTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Legacy\\DatabasesStringTypesTest\:\:setupDatabaseAndCollection\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Legacy\\DatabasesStringTypesTest\:\:setupDatabaseAndCollection\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Legacy\\DatabasesStringTypesTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Legacy\\DatabasesStringTypesTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Legacy\\DatabasesStringTypesTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Legacy\\DatabasesStringTypesTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 5 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Legacy\\DatabasesStringTypesTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Legacy\\DatabasesStringTypesTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Legacy\\DatabasesStringTypesTest\:\:\$setupCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\Databases\\Legacy\\DatabasesStringTypesTest\:\:\$setupCache through static\:\:\.$#' identifier: staticClassAccess.privateProperty count: 4 path: tests/e2e/Services/Databases/Legacy/DatabasesStringTypesTest.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 10 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''user\:'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 62 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 364 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 53 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$sequence'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$updatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''actors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''albums'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''area'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 84 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''artist'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''birthDay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''boundary'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''bytesMax'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''bytesUsed'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''center'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''city'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''coordinates'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''count'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''coverage'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 73 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''drivers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''elements'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''encrypt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''filename'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''format'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 28 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''fullName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''home'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''integers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 155 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''lengths'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''libraries'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''library'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''libraryName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''loc'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''location'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''max'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 30 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''min'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 62 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''onDelete'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''orderNumber'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''person'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''person_one_to_many'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''players'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''point'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''price'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''relationType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''releaseYear'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 55 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 92 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''route'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''sports'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 67 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 569 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''stores'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''tagline'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''title'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 51 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 36 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''twoWay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''twoWayKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 100 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''visits'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''x\-appwrite\-cache'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset ''zones'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 119 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 42 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset 2 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 21 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset 3 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset 4 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset 5 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset 6 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset 7 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset 8 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset 9 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 281 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 730 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getCacheKey\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getDocumentsList\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupAttributes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupAttributes\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupCollection\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupCollection\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupDatabase\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupDatabase\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupDocuments\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupDocuments\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupFulltextSearchDocuments\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupFulltextSearchDocuments\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupIndexes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupIndexes\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupOneToManyRelationship\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupOneToManyRelationship\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupOneToOneRelationship\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:setupOneToOneRelationship\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Offset ''body'' might not exist on array\|null\.$#' - identifier: offsetAccess.notFound - count: 51 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Offset ''headers'' might not exist on array\|null\.$#' - identifier: offsetAccess.notFound - count: 3 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 132 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getDatabaseUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 35 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 296 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 177 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 28 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:waitForAllIndexes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 36 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 76 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 251 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$start of static method Utopia\\Database\\Query\:\:createdBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$start of static method Utopia\\Database\\Query\:\:updatedBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 17 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:createdAfter\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:createdBefore\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:updatedAfter\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:updatedBefore\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 43 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 20 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 68 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 35 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 293 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 166 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 27 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:waitForAllIndexes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 34 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$end of static method Utopia\\Database\\Query\:\:createdBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$end of static method Utopia\\Database\\Query\:\:updatedBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 82 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, mixed given\.$#' - identifier: argument.type - count: 22 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#3 \$message of method PHPUnit\\Framework\\Assert\:\:assertEquals\(\) expects string, int given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Parameter \#3 \$recordId of method Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:getRecordUrl\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 43 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:\$attributesCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:\$collectionCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:\$databaseCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:\$documentsCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:\$fulltextDocsCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:\$indexesCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:\$oneToManyCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:\$oneToOneCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyConsoleClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - message: '#^Variable \$library might not be defined\.$#' identifier: variable.undefined @@ -45120,1044 +1254,6 @@ parameters: count: 4 path: tests/e2e/Services/Databases/LegacyConsoleClientTest.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 10 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Binary operation "\." between ''user\:'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 63 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''\$databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 364 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 53 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''\$sequence'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''\$updatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''actors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''albums'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''area'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 84 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''artist'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''birthDay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''boundary'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''bytesMax'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''bytesUsed'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''center'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''city'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''coordinates'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''count'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''coverage'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 73 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''drivers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''elements'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''encrypt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''filename'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''format'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 28 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''fullName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''home'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''integers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 155 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''lengths'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''libraries'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''library'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''libraryName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''loc'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''location'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''max'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 30 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''min'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 62 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''onDelete'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''orderNumber'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''person'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''person_one_to_many'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''players'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''point'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''price'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''relationType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''releaseYear'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 55 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 92 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''route'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''sports'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 67 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 569 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''stores'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''tagline'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''title'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 51 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 36 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''twoWay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''twoWayKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 100 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''visits'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''x\-appwrite\-cache'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset ''zones'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 119 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 42 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset 2 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 21 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset 3 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset 4 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset 5 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset 6 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset 7 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset 8 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset 9 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 281 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 730 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getCacheKey\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getDocumentsList\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupAttributes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupAttributes\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupCollection\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupCollection\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupDatabase\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupDatabase\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupDocuments\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupDocuments\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupFulltextSearchDocuments\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupFulltextSearchDocuments\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupIndexes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupIndexes\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupOneToManyRelationship\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupOneToManyRelationship\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupOneToOneRelationship\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:setupOneToOneRelationship\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Offset ''body'' might not exist on array\|null\.$#' - identifier: offsetAccess.notFound - count: 51 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Offset ''headers'' might not exist on array\|null\.$#' - identifier: offsetAccess.notFound - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 132 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getDatabaseUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 35 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 296 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 177 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 28 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:waitForAllIndexes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 36 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 76 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 251 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$start of static method Utopia\\Database\\Query\:\:createdBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$start of static method Utopia\\Database\\Query\:\:updatedBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 17 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:createdAfter\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:createdBefore\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:updatedAfter\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:updatedBefore\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 43 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 20 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 68 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 35 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 293 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 166 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 27 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:waitForAllIndexes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 34 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$end of static method Utopia\\Database\\Query\:\:createdBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$end of static method Utopia\\Database\\Query\:\:updatedBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 82 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, mixed given\.$#' - identifier: argument.type - count: 22 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#3 \$message of method PHPUnit\\Framework\\Assert\:\:assertEquals\(\) expects string, int given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Parameter \#3 \$recordId of method Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:getRecordUrl\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 43 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:\$attributesCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:\$collectionCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:\$databaseCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:\$documentsCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:\$fulltextDocsCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:\$indexesCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:\$oneToManyCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:\$oneToOneCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - message: '#^Variable \$library might not be defined\.$#' identifier: variable.undefined @@ -46170,1050 +1266,6 @@ parameters: count: 4 path: tests/e2e/Services/Databases/LegacyCustomClientTest.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 10 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''user\:'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 62 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''\$databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 364 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 53 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''\$sequence'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''\$updatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''actors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''albums'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''area'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 84 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''artist'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''birthDay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''boundary'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''bytesMax'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''bytesUsed'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''center'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''city'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''coordinates'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''count'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''coverage'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 73 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''drivers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''elements'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''encrypt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''filename'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''format'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 28 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''fullName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''home'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''integers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 155 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''lengths'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''libraries'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''library'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''libraryName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''loc'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''location'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''max'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 30 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''min'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 62 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''onDelete'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''orderNumber'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''person'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''person_one_to_many'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''players'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''point'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''price'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''relationType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''releaseYear'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 55 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 92 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''route'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''sports'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 67 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 569 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''stores'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''tagline'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''title'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 51 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 36 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''twoWay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''twoWayKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 100 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''visits'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''x\-appwrite\-cache'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset ''zones'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 119 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 42 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset 2 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 21 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset 3 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset 4 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset 5 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset 6 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset 7 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset 8 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset 9 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 281 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 730 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getCacheKey\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getDocumentsList\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupAttributes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupAttributes\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupCollection\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupCollection\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupDatabase\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupDatabase\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupDocuments\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupDocuments\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupFulltextSearchDocuments\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupFulltextSearchDocuments\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupIndexes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupIndexes\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupOneToManyRelationship\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupOneToManyRelationship\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupOneToOneRelationship\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:setupOneToOneRelationship\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Offset ''body'' might not exist on array\|null\.$#' - identifier: offsetAccess.notFound - count: 51 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Offset ''headers'' might not exist on array\|null\.$#' - identifier: offsetAccess.notFound - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 132 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getDatabaseUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 35 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 296 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 177 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 28 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:waitForAllIndexes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 36 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 76 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 251 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$start of static method Utopia\\Database\\Query\:\:createdBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$start of static method Utopia\\Database\\Query\:\:updatedBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 17 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:createdAfter\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:createdBefore\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:updatedAfter\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:updatedBefore\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 43 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 20 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 68 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 35 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 293 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 166 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 27 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:waitForAllIndexes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 34 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$end of static method Utopia\\Database\\Query\:\:createdBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$end of static method Utopia\\Database\\Query\:\:updatedBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 82 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, mixed given\.$#' - identifier: argument.type - count: 22 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#3 \$message of method PHPUnit\\Framework\\Assert\:\:assertEquals\(\) expects string, int given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Parameter \#3 \$recordId of method Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:getRecordUrl\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 43 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:\$attributesCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:\$collectionCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:\$databaseCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:\$documentsCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:\$fulltextDocsCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:\$indexesCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:\$oneToManyCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:\$oneToOneCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\LegacyCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - message: '#^Variable \$library might not be defined\.$#' identifier: variable.undefined @@ -47226,7194 +1278,36 @@ parameters: count: 4 path: tests/e2e/Services/Databases/LegacyCustomServerTest.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 4 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 7 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - message: '#^Call to an undefined method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:getIndexUrl\(\)\.$#' identifier: method.notFound count: 1 path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 27 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''title'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 38 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:addToTeam\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:addToTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:createCollection\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:createTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:createTeam\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:createUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:getCreatedUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:getCreatedUser\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:getServerHeader\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:permissionsProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:testReadDocuments\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:testReadDocuments\(\) has parameter \$permissions with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:testWriteDocument\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:testWriteDocumentWithPermissions\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 12 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 12 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Parameter \#3 \$recordId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:\$setupDatabaseCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:\$teams type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsGuestTest\:\:\$users type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsGuestTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 4 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 5 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between mixed and ''_'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 10 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - message: '#^Call to an undefined method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:getIndexUrl\(\)\.$#' identifier: method.notFound count: 1 path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''doconly'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''private'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''public'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''session'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 28 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''user1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 31 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:addToTeam\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:addToTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:createTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:createTeam\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:createUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:createUsers\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:getCreatedUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:getCreatedUser\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:getServerHeader\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:permissionsProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:setupDatabase\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:setupDatabase\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:testReadDocuments\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:testReadDocuments\(\) has parameter \$anyCount with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:testReadDocuments\(\) has parameter \$docOnlyCount with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:testReadDocuments\(\) has parameter \$permissions with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:testReadDocuments\(\) has parameter \$usersCount with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:\$collections type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:\$setupDatabaseCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:\$teams type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsMemberTest\:\:\$users type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsMemberTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 4 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between mixed and ''_'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - message: '#^Call to an undefined method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:getIndexUrl\(\)\.$#' identifier: method.notFound count: 1 path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''session'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 21 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''team1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''team2'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 27 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:addToTeam\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:addToTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:createCollections\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:createCollections\(\) has parameter \$teams with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:createTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:createTeam\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:createTeams\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:createUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:createUsers\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:getCreatedUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:getCreatedUser\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:getServerHeader\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:readDocumentsProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:setupDatabase\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:setupDatabase\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:testReadDocuments\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:testReadDocuments\(\) has parameter \$collection with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:testReadDocuments\(\) has parameter \$success with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:testReadDocuments\(\) has parameter \$user with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:testWriteDocuments\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:testWriteDocuments\(\) has parameter \$collection with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:testWriteDocuments\(\) has parameter \$success with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:testWriteDocuments\(\) has parameter \$user with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:writeDocumentsProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:team\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 2 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:\$collections type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:\$setupDatabaseCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:\$teams type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Permissions\\LegacyPermissionsTeamTest\:\:\$users type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 4 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 7 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 21 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot access offset ''counter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 34 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 55 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 12 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Parameter \#1 \$transactionId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:getTransactionUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 10 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 12 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Transactions\\LegacyACIDTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyACIDTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 4 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 13 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 19 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 76 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''operations'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 91 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''transactions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 91 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionPermissionsCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionPermissionsCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionPermissionsCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionPermissionsCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionPermissionsCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionPermissionsCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionPermissionsCustomClientTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$transactionId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionPermissionsCustomClientTest\:\:getTransactionUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 27 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 10 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionPermissionsCustomClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionPermissionsCustomClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionPermissionsCustomClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionPermissionsCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Static property Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionPermissionsCustomClientTest\:\:\$permissionsDatabase \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionPermissionsCustomClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 8 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 145 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''balance'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''category'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''counter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''expiresAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''flag'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''items'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''list1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''list2'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''list3'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''operations'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''priority'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''score'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 26 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 237 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''tags'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 439 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 129 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 63 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$transactionId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:getTransactionUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 91 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 10 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 129 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 63 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#3 \$recordId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:getRecordUrl\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Part \$transactionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Static property Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:\$sharedCollectionId \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Static property Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsConsoleClientTest\:\:\$sharedDatabaseId \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsConsoleClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 8 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 7 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''\$databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 145 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''balance'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''category'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''counter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''expiresAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''flag'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''items'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''list1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''list2'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''list3'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''operations'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''priority'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''score'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 26 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 237 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''tags'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 439 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 129 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 63 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$transactionId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:getTransactionUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 91 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 10 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 129 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 63 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Parameter \#3 \$recordId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:getRecordUrl\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Part \$transactionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Static property Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:\$sharedCollectionId \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Static property Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomClientTest\:\:\$sharedDatabaseId \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 8 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''\$databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 145 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''balance'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''category'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''counter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''expiresAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''flag'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''items'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''list1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''list2'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''list3'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''operations'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''priority'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''score'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 26 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 237 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''tags'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 439 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 129 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 63 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$transactionId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:getTransactionUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 91 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 10 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 129 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 63 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Parameter \#3 \$recordId of method Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:getRecordUrl\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Part \$transactionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Static property Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:\$sharedCollectionId \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Static property Tests\\E2E\\Services\\Databases\\Transactions\\LegacyTransactionsCustomServerTest\:\:\$sharedDatabaseId \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/Databases/Transactions/LegacyTransactionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/functions/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 21 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Deployment build…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Setup deployment…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Setup function…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 19 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 25 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''activate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 54 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildLogs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''builds'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildsMbSeconds'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildsMbSecondsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildsStorage'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildsStorageTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildsTime'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildsTimeTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''content\-length'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''content\-type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''deploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''deployments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''deploymentsStorage'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''deploymentsStorageTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''deploymentsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''domain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''executions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''executionsMbSeconds'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''executionsMbSecondsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''executionsTime'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''executionsTimeTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''executionsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 31 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''logging'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''logs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''range'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''responseBody'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''rules'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''sha'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 65 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''variables'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot access property \$CUSTOM_VARIABLE on mixed\.$#' - identifier: property.nonObject - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 60 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:callWithAuthRetry\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:callWithAuthRetry\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:getExecution\(\) has parameter \$executionId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:getFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:getTemplate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:helperGetLatestCommit\(\) should return string\|null but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:listDeployments\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:setupDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:setupDuplicateDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:setupFunction\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:setupFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:setupTestFunction\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:setupTestFunction\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:setupTestVariables\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:setupTestVariables\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:cleanupFunction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:createVariable\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 12 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:getUsage\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:setupDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$string of function md5 expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of function sizeof expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:getDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Part \$this\-\>getProject\(\)\[''\$id''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 8 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:\$testFunctionCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Functions\\FunctionsConsoleClientTest\:\:\$testVariablesCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsConsoleClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/databases/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 5 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Deployment build…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Setup deployment…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Setup function…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_CLIENT_IP'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_DATA'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_DEPLOYMENT'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_EVENT'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_EXECUTION_ID'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_ID'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_JWT'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_NAME'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_PROJECT_ID'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_RUNTIME_NAME'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_RUNTIME_VERSION'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_TRIGGER'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_USER_ID'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''APPWRITE_REGION'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''APPWRITE_VERSION'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''activate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 22 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''buildLogs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''deploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''domain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''executions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''logs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''responseBody'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''responseHeaders'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''responseStatusCode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''rules'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''runtimes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''sha'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 44 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''templates'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''useCases'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 59 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - message: '#^Method PHPUnit\\Framework\\TestCase\:\:addToAssertionCount\(\) invoked with 2 parameters, 1 required\.$#' identifier: arguments.count count: 1 path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:callWithAuthRetry\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:callWithAuthRetry\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:getExecution\(\) has parameter \$executionId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:getFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:getTemplate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:helperGetLatestCommit\(\) should return string\|null but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:listDeployments\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:setupDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:setupDuplicateDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:setupFunction\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:setupFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:testCreateCustomExecution\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:testCreateCustomExecutionGuest\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:testCreateExecution\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:testCreateExecutionNoDeployment\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:testCreateFunction\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:testCreateHeadExecution\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:testEventTriggerWithClientAuth\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:testGetTemplate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:testListTemplates\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:testNonOverrideOfHeaders\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:testSynchronousExecution\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$needle of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 10 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:getDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Functions\\FunctionsCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 4 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Binary operation "\+" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/functions/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 19 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/users/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Deployment build…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Setup deployment…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Setup function…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Binary operation "\." between mixed and '' \- Branch Test'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Binary operation "\." between mixed and '' \- Commit Test'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 11 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 100 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''\$updatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_CLIENT_IP'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_CPUS'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_EXECUTION_ID'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_MEMORY'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''activate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 427 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''buildDuration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''buildLogs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''buildSize'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''buildSpecification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''byte1'' on array\|false\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''byte2'' on array\|false\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''byte3'' on array\|false\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''commands'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''content\-type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''cron'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''deploymentCreatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''deploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''deploymentRetention'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''deployments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''domain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''entrypoint'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''events'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''executions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''executionsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''functionId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''functions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 160 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''latestDeploymentCreatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''latestDeploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''latestDeploymentStatus'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''logging'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''logs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 15 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''providerOwner'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''providerRepositoryId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''providerRootDirectory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''providerVersion'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''range'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''requestHeaders'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''responseBody'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 32 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''responseHeaders'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''responseStatusCode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''rules'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''runtime'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''runtimeSpecification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''runtimes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''schedule'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''scopes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''sha'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''slug'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''sourceSize'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 22 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''specifications'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 32 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 221 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''timeout'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 22 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''totalSize'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''trigger'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''variables'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset ''x\-appwrite\-execution\-id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 70 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:callWithAuthRetry\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:callWithAuthRetry\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:getExecution\(\) has parameter \$executionId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:getFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:getTemplate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:helperGetLatestCommit\(\) should return string\|null but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:listDeployments\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:provideCustomExecutions\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:setupDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:setupDuplicateDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:setupFunction\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:setupFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:setupTestDeployment\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:setupTestDeployment\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:setupTestExecution\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:setupTestExecution\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:setupTestFunction\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:setupTestFunction\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testCookieExecution\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testCreateCustomExecutionBinaryRequest\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testCreateCustomExecutionBinaryResponse\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testCreateDeploymentFromCLI\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testCreateFunctionAndDeploymentFromTemplate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testCreateFunctionAndDeploymentFromTemplateBranch\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testCreateFunctionAndDeploymentFromTemplateCommit\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testEventTrigger\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testExecutionTimeout\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testFunctionLogging\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testFunctionSpecifications\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testFunctionsDomain\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testFunctionsDomainBinaryRequest\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testFunctionsDomainBinaryResponse\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testGetRuntimes\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testRequestFilters\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testResponseFilters\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:testScopes\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:cancelDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:cleanupFunction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:createDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:createExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 13 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:createTemplateDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:createVariable\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:deleteFunction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:getDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 20 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:getExecution\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:getFunction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 13 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:getFunctionDomain\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:listDeployments\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 15 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:listExecutions\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:setupDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:setupFunctionDomain\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:updateFunction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$haystack of function str_contains expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$needle of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$owner of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:helperGetLatestCommit\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$stream of function fclose expects resource, resource\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$stream of function feof expects resource, resource\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$stream of function fread expects resource, resource\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$string of function base64_encode expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 14 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 33 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 13 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:cancelDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:getDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 22 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, array\|false given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 50 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsStringIgnoringCase\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$repository of method Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:helperGetLatestCommit\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$string of function unpack expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$string of method PHPUnit\\Framework\\Assert\:\:assertStringStartsWith\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Parameter \#4 \$params of method Tests\\E2E\\Client\:\:call\(\) expects array, string given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Part \$deploymentId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 12 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:\$testDeploymentCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:\$testExecutionCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Functions\\FunctionsCustomServerTest\:\:\$testFunctionCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - message: '#^Variable \$largeTag might not be defined\.$#' identifier: variable.undefined count: 8 path: tests/e2e/Services/Functions/FunctionsCustomServerTest.php - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Binary operation "\." between ''Deployment build…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Binary operation "\." between ''Setup deployment…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Binary operation "\." between ''Setup function…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Binary operation "\." between ''user\-is\-'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 15 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''activate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''buildLogs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''deploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''domain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''executions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''logs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''requestHeaders'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''requestMethod'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''requestPath'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''responseBody'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''responseStatusCode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''rules'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''sha'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 27 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''trigger'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 42 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:callWithAuthRetry\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:callWithAuthRetry\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:getExecution\(\) has parameter \$executionId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:getFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:getTemplate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:helperGetLatestCommit\(\) should return string\|null but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:listDeployments\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:setupDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:setupDuplicateDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:setupFunction\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:setupFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:testCreateScheduledExecution\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:testDeleteScheduledExecution\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Parameter \#1 \$hour of method DateTime\:\:setTime\(\) expects int, string given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:getDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Parameter \#2 \$minute of method DateTime\:\:setTime\(\) expects int, string given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Property Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Property Tests\\E2E\\Services\\FunctionsSchedule\\FunctionsScheduleTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/FunctionsSchedule/FunctionsScheduleTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Cannot access offset ''accountCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Cannot access offset ''accountCreateJWT'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 22 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Cannot access offset ''jwt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 30 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testCreateAccount\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testCreateAccount\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testCreateAccountJWT\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testCreateAccountSession\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testCreateAnonymousSession\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testCreateEmailVerification\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testCreateMagicURLSession\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testCreatePasswordRecovery\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testCreatePhoneVerification\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testDeleteAccountSession\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testDeleteAccountSessions\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testGetAccount\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testGetAccount\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testGetAccountLogs\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testGetAccountPreferences\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testGetAccountSession\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testGetAccountSessions\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testUpdateAccountEmail\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testUpdateAccountName\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testUpdateAccountPassword\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testUpdateAccountPhone\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testUpdateAccountPrefs\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:testUpdateAccountStatus\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 19 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 3 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\AccountTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AccountTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Binary operation "\." between ''Response content…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Cannot access offset ''content\-type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 19 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 21 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:testGetBrowserIcon\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:testGetCountryFlag\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:testGetCreditCardIcon\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:testGetFavicon\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:testGetImageFromURL\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:testGetInitials\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:testGetQRCode\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:testGetScreenshot\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:testGetScreenshotWithInvalidPermissions\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:testGetScreenshotWithNewParameters\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:testGetScreenshotWithOriginalDimensions\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:testGetScreenshotWithPermissions\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:testGetScreenshotWithViewportParameters\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Parameter \#1 \$haystack of function str_contains expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 13 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\AvatarsTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/AvatarsTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''account1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''account2'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''accountCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 58 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''localeListContinents'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''localeListCountries'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''teamsCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 24 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 23 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot access offset 2 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 19 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:testArrayBatchedMixed\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:testArrayBatchedMixedOfSameType\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:testArrayBatchedMutations\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:testArrayBatchedMutationsOfSameType\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:testArrayBatchedQueries\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:testArrayBatchedQueriesOfSameType\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:testQueryBatchedMutations\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:testQueryBatchedMutationsOfSameType\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:testQueryBatchedMutationsOfSameTypeWithAlias\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:testQueryBatchedQueries\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:testQueryBatchedQueriesOfSameType\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 22 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 18 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\BatchTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/BatchTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot access offset ''_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot access offset ''localeListContinents'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot access offset ''localeListCountries'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot access offset ''storageCreateBucket'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot access offset ''storageCreateFile'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 20 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:testArrayBatchedJSONContentType\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:testGetEmptyQuery\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:testGetNoQuery\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:testGetRandomParameters\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:testGraphQLContentType\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:testMultipartFormDataContentType\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:testPostEmptyBody\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:testPostNoBody\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:testPostRandomBody\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:testQueryBatchedJSONContentType\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:testSingleQueryJSONContentType\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\ContentTypeTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/ContentTypeTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\) with array will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 3 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Cannot access offset ''_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Cannot access offset ''functionsCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Cannot access offset ''functionsCreateDeployment'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Cannot access offset ''functionsCreateExecution'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Cannot access offset ''functionsGetDeployment'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Cannot access offset ''functionsGetExecution'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Cannot access offset ''functionsListExecutions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 15 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:setupDeployment\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:setupDeployment\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:setupExecution\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:setupExecution\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:setupFunction\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:setupFunction\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:testGetExecution\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:testGetExecutions\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 10 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:\$cachedDeployment type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:\$cachedExecution type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:\$cachedFunction type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\GraphQL\\FunctionsClientTest\:\:\$cachedDeployment through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -54432,336 +1326,6 @@ parameters: count: 3 path: tests/e2e/Services/GraphQL/FunctionsClientTest.php - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Binary operation "\." between ''Deployment build…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\) with array will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 3 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''buildLogs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 26 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''functionsCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''functionsCreateDeployment'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''functionsCreateExecution'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''functionsGet'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''functionsGetDeployment'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''functionsGetExecution'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''functionsList'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''functionsListDeployments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''functionsListExecutions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''functionsListRuntimes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''functionsUpdate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 24 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:setupDeployment\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:setupDeployment\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:setupExecution\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:setupExecution\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:setupFunction\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:setupFunction\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:testGetDeployment\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:testGetDeployments\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:testGetExecution\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:testGetExecutions\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:testGetFunction\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:testGetFunctions\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:testGetRuntimes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:testUpdateFunction\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 13 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 13 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:\$cachedDeployment type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:\$cachedExecution type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:\$cachedFunction type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\GraphQL\\FunctionsServerTest\:\:\$cachedDeployment through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -54781,1097 +1345,11 @@ parameters: path: tests/e2e/Services/GraphQL/FunctionsServerTest.php - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''healthGet'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''healthGetAntivirus'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''healthGetCache'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''healthGetDB'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''healthGetQueueCertificates'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''healthGetQueueFunctions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''healthGetQueueLogs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''healthGetQueueWebhooks'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''healthGetStorageLocal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''healthGetTime'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 18 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:testGetAntiVirusHealth\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:testGetCacheHealth\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:testGetCertificatesQueueHealth\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:testGetDBHealth\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:testGetFunctionsQueueHealth\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:testGetHTTPHealth\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:testGetLocalStorageHealth\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:testGetLogsQueueHealth\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:testGetTimeHealth\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:testGetWebhooksQueueHealth\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 10 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\HealthTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/HealthTest.php - - - - message: '#^Binary operation "\+" between string\|null and 1 results in an error\.$#' + message: '#^Binary operation "\+" between string and 1 results in an error\.$#' identifier: binaryOp.invalid count: 1 path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - message: '#^Binary operation "\." between ''/databases/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Cannot access offset ''_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Cannot access offset ''databasesCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Cannot access offset ''databasesCreateCollection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 15 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AbuseTest\:\:createCollection\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AbuseTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AbuseTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AbuseTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AbuseTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AbuseTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AbuseTest\:\:testComplexQueryBlocked\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AbuseTest\:\:testRateLimitEnforced\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AbuseTest\:\:testTooManyQueriesBlocked\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AbuseTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\AbuseTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\AbuseTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AbuseTest.php - - - - message: '#^Binary operation "\." between ''/databases/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset ''_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset ''accountCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 19 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset ''databasesCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset ''databasesCreateCollection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset ''databasesCreateDocument'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset ''databasesGetDocument'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 21 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:testInvalidAuth\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:testValidAuth\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Part \$documentId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:\$account1 type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:\$account2 is unused\.$#' - identifier: property.unused - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:\$account2 type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:\$collection type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:\$database type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:\$token1 \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\AuthTest\:\:\$token2 \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/AuthTest.php - - - - message: '#^Binary operation "\." between ''/databases/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 5 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between ''Failed to create…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 33 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 15 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''databasesCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''databasesCreateCollection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''databasesCreateDocument'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''databasesCreateDocuments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''databasesDeleteDocuments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''databasesUpdateDocuments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''databasesUpsertDocuments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''documents'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot access offset mixed on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 32 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:setupAttributes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:setupBulkData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:setupBulkData\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:setupBulkUpdatedData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:setupBulkUpsertedData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:setupCollection\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:setupCollection\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:setupDatabase\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:setupDatabase\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:setupDocument\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:setupDocument\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Parameter \#1 \$haystack of function strpos expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 14 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 16 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:\$bulkData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:\$collection type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:\$database type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:\$document type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseClientTest\:\:\$bulkData through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -55896,1188 +1374,6 @@ parameters: count: 4 path: tests/e2e/Services/GraphQL/Legacy/DatabaseClientTest.php - - - message: '#^Binary operation "\." between ''/databases/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 21 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 21 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 176 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 48 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''databasesCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''databasesCreateCollection'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''databasesCreateDocuments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''databasesDeleteDocuments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''databasesUpdateDocuments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''databasesUpsertDocuments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''documents'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 21 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 108 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:setupAllAttributes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:setupAllAttributes\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:setupBulkData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:setupBulkData\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:setupCollections\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:setupCollections\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:setupDatabase\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:setupDatabase\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:setupDocument\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:setupDocument\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:setupIndex\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:setupIndex\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:setupRelationship\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:setupRelationship\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Parameter \#1 \$haystack of function strpos expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 39 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertNotContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 35 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:\$allAttributesCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:\$bulkCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:\$collectionCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:\$databaseCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:\$documentCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:\$indexCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\Legacy\\DatabaseServerTest\:\:\$relationshipCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/Legacy/DatabaseServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Cannot access offset ''localeGet'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Cannot access offset ''localeListContinents'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Cannot access offset ''localeListCountries'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Cannot access offset ''localeListCountriesEU'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Cannot access offset ''localeListCountriesPhones'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Cannot access offset ''localeListCurrencies'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Cannot access offset ''localeListLanguages'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 15 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\LocalizationTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\LocalizationTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\LocalizationTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\LocalizationTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\LocalizationTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\LocalizationTest\:\:testGetContinents\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\LocalizationTest\:\:testGetCountries\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\LocalizationTest\:\:testGetCountriesEU\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\LocalizationTest\:\:testGetCountriesPhones\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\LocalizationTest\:\:testGetCurrencies\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\LocalizationTest\:\:testGetLanguages\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\LocalizationTest\:\:testGetLocale\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\LocalizationTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\LocalizationTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\LocalizationTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/LocalizationTest.php - - - - message: '#^Binary operation "\." between ''/messaging/messages/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 5 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Binary operation "\." between mixed and ''_updated'' results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 34 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 60 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''deliveredTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''deliveryErrors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''identifier'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingCreateApnsProvider''\|''messagingCreateFcmProvider''\|''messagingCreateMailgunProvider''\|''messagingCreateMsg91Provider''\|''messagingCreateResendProvider''\|''messagingCreateSendgridProvider''\|''messagingCreateTelesignProvider''\|''messagingCreateTextmagicProvider''\|''messagingCreateTwilioProvider''\|''messagingCreateVonageProvider'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingCreateEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingCreateFcmProvider'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingCreateMsg91Provider'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingCreatePushNotification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingCreateSMS'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingCreateSendgridProvider'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingCreateSubscriber'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingCreateTopic'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingGetMessage'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingGetProvider'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingGetSubscriber'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingGetTopic'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingListProviders'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingListSubscribers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingListTopics'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingUpdateApnsProvider''\|''messagingUpdateFcmProvider''\|''messagingUpdateMailgunProvider''\|''messagingUpdateMsg91Provider''\|''messagingUpdateResendProvider''\|''messagingUpdateSendgridProvider''\|''messagingUpdateTelesignProvider''\|''messagingUpdateTextmagicProvider''\|''messagingUpdateTwilioProvider''\|''messagingUpdateVonageProvider'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingUpdateEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingUpdateMailgunProvider'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingUpdatePushNotification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingUpdateSMS'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''messagingUpdateTopic'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''providers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 46 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''subscribers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''target'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''targetId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''topicId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''topics'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''usersCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset ''usersCreateTarget'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 53 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:setupEmail\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:setupEmail\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:setupProviders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:setupProviders\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:setupPush\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:setupPush\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:setupSms\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:setupSms\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:setupSubscriber\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:setupSubscriber\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:setupTopic\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:setupTopic\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:setupUpdatedProviders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:setupUpdatedProviders\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:setupUpdatedTopic\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:testDeleteProvider\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:testDeleteSubscriber\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:testDeleteTopic\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:testGetProvider\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:testGetSubscriber\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:testGetTopic\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:testListProviders\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:testListSubscribers\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:testListTopics\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:testUpdateEmail\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:testUpdatePushNotification\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:testUpdateSMS\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 24 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:\$cachedEmail type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:\$cachedProviders type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:\$cachedPush type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:\$cachedSms type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:\$cachedSubscriber type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:\$cachedTopic type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Result of \|\| is always true\.$#' - identifier: booleanOr.alwaysTrue - count: 4 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - - - message: '#^Unreachable statement \- code above always terminates\.$#' - identifier: deadCode.unreachable - count: 1 - path: tests/e2e/Services/GraphQL/MessagingTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\GraphQL\\MessagingTest\:\:\$cachedEmail through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -57120,444 +1416,12 @@ parameters: count: 1 path: tests/e2e/Services/GraphQL/MessagingTest.php - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Cannot access offset ''databasesCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 10 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ScopeTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ScopeTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ScopeTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ScopeTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ScopeTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ScopeTest\:\:testInvalidScope\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ScopeTest\:\:testValidScope\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\ScopeTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Part \$projectId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\ScopeTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\ScopeTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/ScopeTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\) with array will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Cannot access offset ''storageCreateBucket'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Cannot access offset ''storageCreateFile'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Cannot access offset ''storageGetFile'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Cannot access offset ''storageListFiles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Cannot access offset ''storageUpdateFile'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 17 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:setupBucket\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:setupBucket\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:setupFile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:setupFile\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:testGetFile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:testGetFile\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:testGetFileDownload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:testGetFileDownload\(\) should return array but return statement is missing\.$#' identifier: return.missing count: 1 path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:testGetFilePreview\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:testGetFiles\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:testUpdateFile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 8 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:\$cachedBucket type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:\$cachedFile type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageClientTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\GraphQL\\StorageClientTest\:\:\$cachedBucket through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -57570,330 +1434,12 @@ parameters: count: 5 path: tests/e2e/Services/GraphQL/StorageClientTest.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\) with array will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot access offset ''storageCreateBucket'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot access offset ''storageCreateFile'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot access offset ''storageGetBucket'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot access offset ''storageGetFile'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot access offset ''storageListBuckets'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot access offset ''storageListFiles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot access offset ''storageUpdateBucket'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot access offset ''storageUpdateFile'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot access offset ''totalSize'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 21 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:setupBucket\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:setupBucket\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:setupFile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:setupFile\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:testGetBucket\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:testGetBucket\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:testGetBuckets\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:testGetFile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:testGetFile\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:testGetFileDownload\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:testGetFileDownload\(\) should return array but return statement is missing\.$#' identifier: return.missing count: 1 path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:testGetFilePreview\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:testGetFiles\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:testUpdateBucket\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:testUpdateBucket\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:testUpdateFile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 10 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:\$cachedBucket type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:\$cachedFile type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/StorageServerTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\GraphQL\\StorageServerTest\:\:\$cachedBucket through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -57907,1523 +1453,11 @@ parameters: path: tests/e2e/Services/GraphQL/StorageServerTest.php - - message: '#^Binary operation "\+" between string\|null and 1 results in an error\.$#' + message: '#^Binary operation "\+" between string and 1 results in an error\.$#' identifier: binaryOp.invalid count: 1 path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Binary operation "\." between ''/tablesdb/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Cannot access offset ''_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Cannot access offset ''databasesCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Cannot access offset ''tablesDBCreateTable'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 15 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AbuseTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AbuseTest\:\:createTable\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AbuseTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AbuseTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AbuseTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AbuseTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AbuseTest\:\:testComplexQueryBlocked\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AbuseTest\:\:testRateLimitEnforced\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AbuseTest\:\:testTooManyQueriesBlocked\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AbuseTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Parameter \#2 \$default of static method Utopia\\System\\System\:\:getEnv\(\) expects string\|null, int given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\AbuseTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\AbuseTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AbuseTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Binary operation "\." between ''/tablesdb/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset ''_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset ''accountCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 19 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset ''databasesCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset ''tablesDBCreateRow'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset ''tablesDBCreateTable'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset ''tablesDBGetRow'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 21 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:testInvalidAuth\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:testValidAuth\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Part \$rowId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:\$account1 type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:\$account2 is unused\.$#' - identifier: property.unused - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:\$account2 type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:\$database type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:\$table type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:\$token1 \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\AuthTest\:\:\$token2 \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/AuthTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between ''/tablesdb/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''_databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 29 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''_permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''_tableId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 24 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''rows'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''tablesDBCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''tablesDBCreateRow'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''tablesDBCreateRows'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''tablesDBCreateTable'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''tablesDBDeleteRows'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''tablesDBListRows'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''tablesDBUpdateRows'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''tablesDBUpsertRow'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''tablesDBUpsertRows'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 37 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:setupBulkCreate\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:setupBulkUpsert\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:setupColumns\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:setupDatabase\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:setupRow\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:setupTable\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Parameter \#1 \$haystack of function strpos expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 9 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 20 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 3 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:\$cachedBulkCreate type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:\$cachedBulkUpsert type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:\$cachedDatabase type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:\$cachedRow type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:\$cachedTable type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:\$columnsCreated type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Static property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseClientTest\:\:\$cachedDatabase \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Binary operation "\." between ''/tablesdb/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 23 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 23 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''_databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 120 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''_permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''_tableId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 52 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''rows'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 23 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 23 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''tablesDBCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''tablesDBCreateIndex'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''tablesDBCreateRow'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''tablesDBCreateTable'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''tablesDBDeleteRows'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''tablesDBListRows'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''tablesDBUpdateRows'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''tablesDBUpsertRow'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''tablesDBUpsertRows'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 106 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupBooleanColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupBooleanColumn\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupBulkData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupBulkData\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupDatabase\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupDatabase\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupDatetimeColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupDatetimeColumn\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupEmailColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupEmailColumn\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupEnumColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupEnumColumn\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupFloatColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupFloatColumn\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupIPColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupIPColumn\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupIndex\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupIndex\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupIntegerColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupIntegerColumn\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupRelationshipColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupRelationshipColumn\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupRow\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupRow\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupStringColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupStringColumn\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupTable\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupTable\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupURLColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupURLColumn\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupUpdatedBooleanColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupUpdatedDatetimeColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupUpdatedEmailColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupUpdatedEnumColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupUpdatedFloatColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupUpdatedIPColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupUpdatedIntegerColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupUpdatedRelationshipColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupUpdatedStringColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:setupUpdatedURLColumn\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Parameter \#1 \$haystack of function strpos expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 37 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertNotContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 75 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedBooleanColumnData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedBulkData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedDatabase type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedDatetimeColumnData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedEmailColumnData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedEnumColumnData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedFloatColumnData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedIPColumnData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedIndexData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedIntegerColumnData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedRelationshipColumnData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedRowData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedStringColumnData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedTableData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedURLColumnData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\GraphQL\\TablesDB\\DatabaseServerTest\:\:\$cachedBooleanColumnData through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -59514,252 +1548,6 @@ parameters: count: 5 path: tests/e2e/Services/GraphQL/TablesDB/DatabaseServerTest.php - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Cannot access offset ''roles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Cannot access offset ''teamId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Cannot access offset ''teamsCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Cannot access offset ''teamsCreateMembership'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Cannot access offset ''teamsGet'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Cannot access offset ''teamsGetMembership'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Cannot access offset ''teamsListMemberships'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 15 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:setupMembership\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:setupMembership\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:setupTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:setupTeam\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:testDeleteTeamMembership\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:testGetTeam\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:testGetTeamMembership\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:testGetTeamMemberships\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:testGetTeams\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 7 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:\$cachedMembership type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:\$cachedTeam type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\GraphQL\\TeamsClientTest\:\:\$cachedMembership through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -59772,330 +1560,6 @@ parameters: count: 3 path: tests/e2e/Services/GraphQL/TeamsClientTest.php - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\) with array will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 22 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''roles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''teamId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''teamsCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''teamsCreateMembership'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''teamsGet'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''teamsGetMembership'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''teamsGetPrefs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''teamsListMemberships'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''teamsUpdateMembership'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''teamsUpdateName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot access offset ''teamsUpdatePrefs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 22 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:setupMembership\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:setupMembership\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:setupTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:setupTeam\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:setupTeamWithPrefs\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:setupTeamWithPrefs\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:testDeleteTeam\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:testDeleteTeamMembership\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:testGetTeam\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:testGetTeamMembership\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:testGetTeamMemberships\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:testGetTeamPreferences\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:testGetTeams\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:testUpdateTeam\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:testUpdateTeamMembershipRoles\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:testUpdateTeamPrefs\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 10 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:\$cachedMembership type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:\$cachedTeam type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:\$cachedTeamWithPrefs type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\GraphQL\\TeamsServerTest\:\:\$cachedMembership through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -60114,444 +1578,6 @@ parameters: count: 3 path: tests/e2e/Services/GraphQL/TeamsServerTest.php - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 45 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''identifier'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''messagingCreateMailgunProvider'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersCreate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersCreateTarget'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersGet'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersGetPrefs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersGetTarget'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersList'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersListLogs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersListMemberships'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersListSessions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersListTargets'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersUpdateEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersUpdateEmailVerification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersUpdateName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersUpdatePassword'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersUpdatePhone'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersUpdatePhoneVerification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersUpdatePrefs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersUpdateStatus'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot access offset ''usersUpdateTarget'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 32 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:setupUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:setupUser\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:setupUserTarget\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:setupUserTarget\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testDeleteUser\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testDeleteUserSession\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testDeleteUserSessions\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testDeleteUserTarget\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testGetUser\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testGetUserLogs\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testGetUserMemberships\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testGetUserPreferences\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testGetUserSessions\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testGetUserTarget\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testGetUsers\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testListUserTargets\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testUpdateUserEmail\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testUpdateUserEmailVerification\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testUpdateUserName\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testUpdateUserPassword\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testUpdateUserPhone\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testUpdateUserPhoneVerification\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testUpdateUserPrefs\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testUpdateUserStatus\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:testUpdateUserTarget\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Method Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 15 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 10 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:\$cachedUser type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:\$cachedUserTarget type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - - - message: '#^Property Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/GraphQL/UsersTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\GraphQL\\UsersTest\:\:\$cachedUser through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -60565,1796 +1591,8 @@ parameters: path: tests/e2e/Services/GraphQL/UsersTest.php - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Health/AntiVirusTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/AntiVirusTest.php - - - - message: '#^Cannot access offset ''version'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/AntiVirusTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/AuditsQueueTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Health/AuditsQueueTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/BuildsQueueTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Health/BuildsQueueTest.php - - - - message: '#^Cannot access offset ''ping'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/CacheTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/CacheTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/CacheTest.php - - - - message: '#^Cannot access offset ''statuses'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/CacheTest.php - - - - message: '#^Cannot access offset ''issuerOrganisation'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/CertificateTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/CertificateTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Health/CertificateTest.php - - - - message: '#^Cannot access offset ''subjectSN'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/CertificateTest.php - - - - message: '#^Cannot access offset ''validFrom'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/CertificateTest.php - - - - message: '#^Cannot access offset ''validTo'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/CertificateTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/CertificatesQueueTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Health/CertificatesQueueTest.php - - - - message: '#^Cannot access offset ''ping'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/DBTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/DBTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/DBTest.php - - - - message: '#^Cannot access offset ''statuses'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/DBTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/DatabasesQueueTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Health/DatabasesQueueTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/DeletesQueueTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Health/DeletesQueueTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/FunctionsQueueTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Health/FunctionsQueueTest.php - - - - message: '#^Cannot access offset ''ping'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/HTTPTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/HTTPTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/HTTPTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 9 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Method Tests\\E2E\\Services\\Health\\HealthBase\:\:callGet\(\) has parameter \$query with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Method Tests\\E2E\\Services\\Health\\HealthBase\:\:callGet\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Method Tests\\E2E\\Services\\Health\\HealthBase\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Method Tests\\E2E\\Services\\Health\\HealthBase\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Method Tests\\E2E\\Services\\Health\\HealthBase\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Method Tests\\E2E\\Services\\Health\\HealthBase\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Method Tests\\E2E\\Services\\Health\\HealthBase\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Method Tests\\E2E\\Services\\Health\\HealthBase\:\:getProjectId\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Method Tests\\E2E\\Services\\Health\\HealthBase\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Property Tests\\E2E\\Services\\Health\\HealthBase\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Property Tests\\E2E\\Services\\Health\\HealthBase\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Health/HealthBase.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/LogsQueueTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Health/LogsQueueTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/MailsQueueTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Health/MailsQueueTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/MessagingQueueTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Health/MessagingQueueTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/MigrationsQueueTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Health/MigrationsQueueTest.php - - - - message: '#^Cannot access offset ''ping'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/PubSubTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/PubSubTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/PubSubTest.php - - - - message: '#^Cannot access offset ''statuses'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/PubSubTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/StatsResourcesQueueTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Health/StatsResourcesQueueTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/StatsUsageQueueTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Health/StatsUsageQueueTest.php - - - - message: '#^Cannot access offset ''ping'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/StorageLocalTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/StorageLocalTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/StorageLocalTest.php - - - - message: '#^Cannot access offset ''ping'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/StorageTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/StorageTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/StorageTest.php - - - - message: '#^Cannot access offset ''diff'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/TimeTest.php - - - - message: '#^Cannot access offset ''localTime'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/TimeTest.php - - - - message: '#^Cannot access offset ''remoteTime'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/TimeTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/TimeTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Health/WebhooksQueueTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Health/WebhooksQueueTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Failed to iterate…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Binary operation "\." between mixed and '' continent should…'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Binary operation "\." between mixed and '' country should be…'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Cannot access offset ''continents'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Cannot access offset ''countries'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Cannot access offset ''countryCode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Cannot access offset ''countryName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Cannot access offset ''nativeName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Cannot access offset ''symbol'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Cannot access offset 185 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 18 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleConsoleClientTest\:\:testFallbackLocale\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleConsoleClientTest\:\:testGetContinents\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleConsoleClientTest\:\:testGetCountries\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleConsoleClientTest\:\:testGetCountriesEU\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleConsoleClientTest\:\:testGetCountriesPhones\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleConsoleClientTest\:\:testGetCurrencies\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleConsoleClientTest\:\:testGetLanguages\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleConsoleClientTest\:\:testGetLocale\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleConsoleClientTest\:\:testLanguages\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Locale/LocaleConsoleClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Failed to iterate…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Binary operation "\." between mixed and '' continent should…'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Binary operation "\." between mixed and '' country should be…'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot access offset ''continents'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot access offset ''countries'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot access offset ''countryCode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot access offset ''countryName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot access offset ''nativeName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 25 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot access offset ''symbol'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot access offset 185 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 26 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:testFallbackLocale\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:testGetContinents\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:testGetCountries\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:testGetCountriesEU\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:testGetCountriesPhones\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:testGetCurrencies\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:testGetLanguages\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:testGetLocale\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:testLanguages\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Locale\\LocaleCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Failed to iterate…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Binary operation "\." between mixed and '' continent should…'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Binary operation "\." between mixed and '' country should be…'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot access offset ''continents'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot access offset ''countries'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot access offset ''countryCode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot access offset ''countryName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot access offset ''nativeName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 25 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot access offset ''symbol'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot access offset 185 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 26 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:testFallbackLocale\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:testGetContinents\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:testGetCountries\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:testGetCountriesEU\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:testGetCountriesPhones\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:testGetCurrencies\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:testGetLanguages\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:testGetLocale\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:testLanguages\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Locale\\LocaleCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Locale/LocaleCustomServerTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/messaging/messages/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 31 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/messaging/messages…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 10 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/messaging/topics/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 34 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/messaging…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 27 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/users/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 7 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 138 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''credentials'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''deliveredTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''deliveryErrors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''emailTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''identifier'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''image'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''logs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 19 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''options'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''providerType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''providers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''pushTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''sandbox'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''scheduledAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''smsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 136 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''subscribe'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''subscribers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''target'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''targetId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''targets'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 22 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''topicId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''topics'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 26 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''url'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 185 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupCreatedProviders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupCreatedProviders\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupCreatedTopics\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupCreatedTopics\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupDraftEmailMessage\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupDraftEmailMessage\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupSentEmailData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupSentEmailData\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupSentPushData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupSentPushData\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupSentSmsData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupSentSmsData\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupSubscriberData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupSubscriberData\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupUpdatedProviders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupUpdatedProviders\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:setupUpdatedTopicId\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:testListProviders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:testSendEmail\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:testSubscriberTargetSubQuery\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 17 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Parameter \#2 \$path of method Tests\\E2E\\Client\:\:call\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Part \$bucketId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Part \$fileId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 34 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:\$createdProviders type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:\$createdTopics type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:\$draftEmailMessage type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:\$sentEmailData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:\$sentPushData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:\$sentSmsData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:\$subscriberData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:\$updatedProviders type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingConsoleClientTest\:\:\$updatedTopicId type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Result of \|\| is always true\.$#' - identifier: booleanOr.alwaysTrue - count: 3 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Unreachable statement \- code above always terminates\.$#' - identifier: deadCode.unreachable + message: '#^Variable \$from in empty\(\) is never defined\.$#' + identifier: empty.variable count: 1 path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php @@ -62362,1166 +1600,8 @@ parameters: message: '#^Variable \$from in empty\(\) is never defined\.$#' identifier: empty.variable count: 1 - path: tests/e2e/Services/Messaging/MessagingConsoleClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - message: '#^Binary operation "\." between ''/messaging/messages/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 21 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/messaging/messages…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/messaging/topics/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 24 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/messaging…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 16 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/users/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 7 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 106 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''credentials'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''deliveredTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''deliveryErrors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''emailTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''identifier'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''image'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''logs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''options'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''providerType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''providers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''pushTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''sandbox'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''scheduledAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''smsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 100 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''subscribe'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''subscribers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''target'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''targetId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''targets'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 22 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''topicId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''topics'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''url'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 149 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupCreatedProviders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupCreatedProviders\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupCreatedTopics\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupCreatedTopics\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupDraftEmailMessage\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupDraftEmailMessage\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupSentEmailData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupSentEmailData\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupSentPushData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupSentPushData\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupSentSmsData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupSentSmsData\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupSubscriberData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupSubscriberData\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupUpdatedProviders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupUpdatedProviders\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:setupUpdatedTopicId\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:testListProviders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:testSendEmail\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:testSubscriberTargetSubQuery\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 17 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Parameter \#2 \$path of method Tests\\E2E\\Client\:\:call\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Part \$bucketId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Part \$fileId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 34 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:\$createdProviders type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:\$createdTopics type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:\$draftEmailMessage type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:\$sentEmailData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:\$sentPushData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:\$sentSmsData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:\$subscriberData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:\$updatedProviders type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomClientTest\:\:\$updatedTopicId type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Result of \|\| is always true\.$#' - identifier: booleanOr.alwaysTrue - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Unreachable statement \- code above always terminates\.$#' - identifier: deadCode.unreachable - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Variable \$from in empty\(\) is never defined\.$#' - identifier: empty.variable - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/messaging/messages/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 21 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/messaging/messages…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/messaging/topics/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 24 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/messaging…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 16 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/users/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 7 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 106 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''credentials'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''deliveredTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''deliveryErrors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''emailTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''identifier'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''image'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''logs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''options'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''providerType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''providers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''pushTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''sandbox'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''scheduledAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''smsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 100 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''subscribe'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''subscribers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''target'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''targetId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''targets'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 22 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''topicId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''topics'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''url'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 149 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupCreatedProviders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupCreatedProviders\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupCreatedTopics\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupCreatedTopics\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupDraftEmailMessage\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupDraftEmailMessage\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupSentEmailData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupSentEmailData\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupSentPushData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupSentPushData\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupSentSmsData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupSentSmsData\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupSubscriberData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupSubscriberData\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupUpdatedProviders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupUpdatedProviders\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:setupUpdatedTopicId\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:testListProviders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:testSendEmail\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:testSubscriberTargetSubQuery\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 17 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Parameter \#2 \$path of method Tests\\E2E\\Client\:\:call\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Part \$bucketId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Part \$fileId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 34 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:\$createdProviders type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:\$createdTopics type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:\$draftEmailMessage type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:\$sentEmailData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:\$sentPushData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:\$sentSmsData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:\$subscriberData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:\$updatedProviders type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Messaging\\MessagingCustomServerTest\:\:\$updatedTopicId type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Result of \|\| is always true\.$#' - identifier: booleanOr.alwaysTrue - count: 3 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - - - message: '#^Unreachable statement \- code above always terminates\.$#' - identifier: deadCode.unreachable - count: 1 - path: tests/e2e/Services/Messaging/MessagingCustomServerTest.php - - message: '#^Variable \$from in empty\(\) is never defined\.$#' identifier: empty.variable @@ -63540,9960 +1620,48 @@ parameters: count: 5 path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/databases/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 18 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/messaging/messages/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/messaging/topics/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 14 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/messaging…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 19 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/migrations/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 7 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/sites/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/tablesdb/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 14 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/teams/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 7 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/users/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 16 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Deployment build…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Expected 10…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Setup deployment…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Setup function…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between mixed and ''&jwt\='' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between mixed and ''\:'' results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and array\\|string results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 33 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 125 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''activate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''adapter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''allowedFileExtensions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''antivirus'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''attributes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''bucket'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildLogs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildRuntime'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''column''\|''database''\|''table'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''compression'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''content'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''database'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''deployment'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''deploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''deployments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''destination'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''domain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''emailTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''encryption'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''entrypoint'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 22 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''file'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''framework'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''function'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''logs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''max'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''maximumFileSize'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''membership'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''memberships'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''mimeType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''min'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 19 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''password'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''path'' on array\{scheme\?\: string, host\?\: string, port\?\: int\<0, 65535\>, user\?\: string, pass\?\: string, path\?\: string, query\?\: string, fragment\?\: string\}\|false\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''pending'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''phone'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''processing'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''provider'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''providerType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''resources'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''roles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''row'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''rows'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''rules'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''runtime'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''scheduledAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''sha'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''site''\|''site\-deployment''\|''site\-variable'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''source'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''stage'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 19 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 113 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''statusCounters'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''subject'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''subscriber'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''success'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 25 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''targets'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''team'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''teamId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''topic'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''topics'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''user'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 15 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''variables'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset ''warning'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 201 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:callWithAuthRetry\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:callWithAuthRetry\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:getDestinationProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:getExecution\(\) has parameter \$executionId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:getFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:getTemplate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:helperGetLatestCommit\(\) should return string\|null but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:listDeployments\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:performCsvMigration\(\) has parameter \$body with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:performCsvMigration\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:performMigrationSync\(\) has parameter \$body with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:performMigrationSync\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:performMigrationSync\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:setupDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:setupDuplicateDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:setupFunction\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:setupFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:setupMigrationDatabase\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:setupMigrationTable\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of function implode expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 25 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:getDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsStringIgnoringCase\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$subject of function preg_match expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:\$cachedDatabaseData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:\$cachedTableData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:\$destinationProject type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Migrations\\MigrationsConsoleClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Migrations/MigrationsConsoleClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 19 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\-" between mixed and 1 results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/project/variables/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 13 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 193 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/teams/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 7 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/users/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Password Reset for '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Reset your '' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Setup devKey failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Setup project…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Setup team failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 19 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 21 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''appwriteio\://signin…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''http\://localhost…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 72 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 213 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''access\-control\-allow\-origin'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''accessedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''address'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''appId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''authDuration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''authInvalidateSessions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''authPasswordDictionary'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''authPasswordHistory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''authPersonalDataCheck'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''authSessionsLimit'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''confirm'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''devKeys'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''events'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''hostname'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 24 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''html'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''httpPass'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''httpUser'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''jwt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 42 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''keys'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''labels'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''locale'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''location'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 60 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''oAuthProviders'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''optional'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''platforms'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''projectId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''projects'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 36 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''roles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''scopes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''sdks'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 26 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''security'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''senderEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''senderName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''sessions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''set\-cookie'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''smtpEnabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''smtpHost'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''smtpPassword'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''smtpPort'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''smtpSecure'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''smtpSenderEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''smtpSenderName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''smtpUsername'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 415 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''store'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 24 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''subject'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''teamId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 23 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 32 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''url'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''userEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''userName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''variables'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset ''webhooks'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 25 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 433 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:setupDevKey\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:setupProject\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:setupProjectData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:setupProjectWithAuthLimit\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:setupProjectWithKey\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:setupProjectWithPlatform\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:setupProjectWithServicesDisabled\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:setupProjectWithVariable\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:setupProjectWithWebhook\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:setupUserMembership\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:testDeleteProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:testTransferProjectTeam\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:testUpdateProjectServiceStatusAdmin\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:updateMembershipRole\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Only iterables can be unpacked, mixed given\.$#' - identifier: arrayUnpacking.nonIterable - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$address of method Tests\\E2E\\Scopes\\Scope\:\:getLastEmailByAddress\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$expectedCount of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$html of method Tests\\E2E\\Scopes\\Scope\:\:extractQueryParamsFromEmailLink\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$string of function ucfirst expects string, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 14 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 70 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 41 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 27 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 19 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 21 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsStringIgnoringCase\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$membershipId of method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:updateMembershipRole\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$path of method Tests\\E2E\\Client\:\:call\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$string of method PHPUnit\\Framework\\Assert\:\:assertStringStartsNotWith\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$string of method PHPUnit\\Framework\\Assert\:\:assertStringStartsWith\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$subject of function preg_match expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$value of method Tests\\E2E\\Client\:\:addHeader\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Parameter \#3 \$token of method Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:setupFunction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Part \$bucketId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 2 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:\$cachedProjectData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:\$cachedProjectWithAuthLimit type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:\$cachedProjectWithKey type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:\$cachedProjectWithPlatform type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:\$cachedProjectWithServicesDisabled type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:\$cachedProjectWithVariable type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Projects\\ProjectsConsoleClientTest\:\:\$cachedProjectWithWebhook type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Unreachable statement \- code above always terminates\.$#' - identifier: deadCode.unreachable - count: 1 - path: tests/e2e/Services/Projects/ProjectsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/proxy/rules/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 17 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsCustomServerTest\:\:testCreateProjectRule\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\ProjectsCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Projects\\ProjectsCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Projects\\ProjectsCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/ProjectsCustomServerTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 19 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$updatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot access offset ''active'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot access offset ''projectId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot access offset ''region'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot access offset ''resourceId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot access offset ''resourceType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot access offset ''resourceUpdatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot access offset ''schedule'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot access offset ''schedules'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 26 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 25 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\Schedules\\SchedulesConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\Schedules\\SchedulesConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\Schedules\\SchedulesConsoleClientTest\:\:setupScheduleData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Projects\\Schedules\\SchedulesConsoleClientTest\:\:setupScheduleProjectData\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 12 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Projects\\Schedules\\SchedulesConsoleClientTest\:\:\$cachedScheduleData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Projects\\Schedules\\SchedulesConsoleClientTest\:\:\$cachedScheduleProjectData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Projects/Schedules/SchedulesConsoleClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 3 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/functions/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/sites/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Setup deployment…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Setup function…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Setup site failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 43 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''\$updatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''APPWRITE_FUNCTION_ID'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 146 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''deploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''domain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''functionId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 76 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''location'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''logs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''rules'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 36 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''server'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''siteId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 23 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 104 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset ''trigger'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 24 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:listRules\(\) has parameter \$params with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:setupAPIRule\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:setupFunctionRule\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:setupRedirectRule\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:setupSiteRule\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:testGetRule\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:testListRules\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:cleanupFunction\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#1 \$needle of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#1 \$ruleId of method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:cleanupRule\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 18 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#1 \$ruleId of method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:deleteRule\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#1 \$ruleId of method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:getRule\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#1 \$ruleId of method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:updateRuleVerification\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#1 \$siteId of method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:cleanupSite\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 33 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#2 \$functionId of method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:createFunctionRule\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#2 \$functionId of method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:setupFunctionRule\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 12 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#2 \$siteId of method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:createSiteRule\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#2 \$siteId of method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:setupSiteRule\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Parameter \#5 \$resourceId of method Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:setupRedirectRule\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Proxy\\ProxyCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Proxy/ProxyCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/databases/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 10 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/functions/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/tablesdb/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 10 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Deployment build…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Index polling…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Setup deployment…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Setup function…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 19 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 18 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 23 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''activate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildDuration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildEndedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildLogs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildPath'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildSize'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildStartedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''channels'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 85 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 313 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''deploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''domain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''events'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 111 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''payload'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 39 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''pingCount'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''rules'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''sha'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 19 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 40 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''success'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''to'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''totalSize'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 39 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset ''user'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 66 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:callWithAuthRetry\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:callWithAuthRetry\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:createCollectionWithAttribute\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:createCollectionWithIndex\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:createTableWithAttribute\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:createTableWithIndex\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:getExecution\(\) has parameter \$executionId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:getFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:getTemplate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:getWebsocket\(\) has parameter \$channels with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:getWebsocket\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:getWebsocket\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:getWebsocketWithCustomQuery\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:getWebsocketWithCustomQuery\(\) has parameter \$queryParams with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:helperGetLatestCommit\(\) should return string\|null but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:listDeployments\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:setupDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:setupDuplicateDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:setupFunction\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:setupFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:testCreateDeployment\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:testPing\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 42 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Parameter \#1 \$payload of method WebSocket\\Base\:\:send\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Parameter \#1 \$string of function urlencode expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 94 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:getDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 168 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 28 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Part \$actorsId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 48 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Part \$databaseId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 100 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Part \$deploymentId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 6 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Part \$functionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 6 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Part \$projectId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 22 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Part \$this\-\>getProject\(\)\[''\$id''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Realtime\\RealtimeConsoleClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/databases/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 99 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Binary operation "\." between ''/teams/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Binary operation "\." between ''Deployment build…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Binary operation "\." between ''Setup deployment…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Binary operation "\." between ''Setup function…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 39 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Binary operation "\." between ''databases\.'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 124 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertTrue\(\) with true will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 26 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 63 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''activate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''age'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''buildLogs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''category'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''channels'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 104 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''deploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''domain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''events'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''level'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''payload'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 35 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''priority'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''response'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''rules'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''score'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''sha'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 25 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 19 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''subscriptions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 70 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 164 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:callWithAuthRetry\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:callWithAuthRetry\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:getExecution\(\) has parameter \$executionId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:getFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:getTemplate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:getWebsocket\(\) has parameter \$channels with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:getWebsocket\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:getWebsocket\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:getWebsocketWithCustomQuery\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:getWebsocketWithCustomQuery\(\) has parameter \$queryParams with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:helperGetLatestCommit\(\) should return string\|null but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:listDeployments\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:setupDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:setupDuplicateDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:setupFunction\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:setupFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:testAccountChannelWithQuery\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:testCollectionScopedDocumentsChannelReceivesEvents\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:testCollectionScopedDocumentsChannelWithQuery\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:testDatabaseChannelWithQuery\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:testFilesChannelWithQuery\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:testInvalidQueryShouldNotSubscribe\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:testMultipleQueriesWithAndLogic\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:testMultipleSubscriptionsDifferentQueryKeys\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:testProjectChannelWithHeaderOnly\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:testProjectChannelWithQuery\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:testQueryKeys\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:testSubscriptionPreservedAfterPermissionChange\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:testTestsChannelWithQueries\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Parameter \#1 \$haystack of function str_contains expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 24 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 68 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Parameter \#1 \$string of function urlencode expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 21 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:getDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 10 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Parameter \#3 \$projectId of method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:getWebsocket\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientQueryTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientQueryTest.php - - - - message: '#^Binary operation "\." between ''/account/sessions/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/databases/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 36 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/functions/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 5 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/tablesdb/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 13 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/tablesdb…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 10 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/teams/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/users/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Deployment build…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Setup deployment…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Setup function…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 27 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''account\.'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 15 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''databases\.'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 82 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertTrue\(\) with true will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 102 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''activate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''buildLogs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''channels'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 158 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1037 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''deploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''domain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''events'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 513 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''funcKey1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''funcKey2'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''html'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''memberships'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 15 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''payload'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 106 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''rules'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''sha'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 54 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''success'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''to'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 93 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset ''user'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 24 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 160 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:callWithAuthRetry\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:callWithAuthRetry\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:createTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:getExecution\(\) has parameter \$executionId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:getFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:getTemplate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:getWebsocket\(\) has parameter \$channels with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:getWebsocket\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:getWebsocket\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:getWebsocketWithCustomQuery\(\) has parameter \$headers with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:getWebsocketWithCustomQuery\(\) has parameter \$queryParams with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:helperGetLatestCommit\(\) should return string\|null but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:listDeployments\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:setupDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:setupDuplicateDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:setupFunction\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:setupFunctionDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testChannelAccount\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testChannelDatabase\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testChannelDatabaseBulkOperationMultipleClient\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testChannelDatabaseCollectionPermissions\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testChannelDatabaseTransaction\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testChannelDatabaseTransactionMultipleOperations\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testChannelDatabaseTransactionRollback\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testChannelExecutions\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testChannelFiles\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testChannelParsing\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testChannelTablesDBRowUpdate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testChannelsTablesDB\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testConcurrentRealtimeTrafficCoroutines\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testConnectionPlatform\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testManualAuthentication\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testPingPong\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:testRelationshipPayloadHidesRelatedDoc\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#1 \$html of method Tests\\E2E\\Scopes\\Scope\:\:extractQueryParamsFromEmailLink\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 21 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 100 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#1 \$needle of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#1 \$payload of method WebSocket\\Base\:\:send\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#1 \$string of function urlencode expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 214 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:getDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 621 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 58 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Parameter \#3 \$message of method PHPUnit\\Framework\\Assert\:\:assertEquals\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$actorsId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 167 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$bucketId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 21 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$collectionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 11 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$databaseId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 256 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$doc1Id \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$documentId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 31 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$executionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 10 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$fileId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 15 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$functionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 12 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$legacyDatabaseId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 6 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$legacyTableId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 6 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$level1Id \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 4 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$level2Id \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$membershipId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 5 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$recoveryId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 8 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$response1\[''data''\]\[''payload''\]\[''\$id''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 4 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$response2\[''data''\]\[''payload''\]\[''\$id''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 4 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$response\[''data''\]\[''payload''\]\[''\$id''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 11 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$sessionNewId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 12 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$tableId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 15 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$teamId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 15 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$this\-\>getProject\(\)\[''\$id''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$userId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 47 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Part \$verificationId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 8 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Realtime\\RealtimeCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Realtime/RealtimeCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/sites/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Setup deployment…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Setup site failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''activate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''content\-length'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''content\-type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''deploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''deploymentScreenshotDark'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''deploymentScreenshotLight'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''domain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''rules'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''screenshotDark'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''screenshotLight'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''sha'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 29 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 49 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:getDeploymentDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:getLog\(\) has parameter \$logId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:getSiteDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:getTemplate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:helperGetLatestCommit\(\) should return string\|null but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:listDeployments\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:listLogs\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:setupDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:setupDuplicateDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:setupSite\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:setupSiteDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Parameter \#1 \$string of function md5 expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Parameter \#2 \$actualImageBlob of method Tests\\E2E\\Scopes\\Scope\:\:assertSamePixels\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:getDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Parameter \#2 \$message of method PHPUnit\\Framework\\Assert\:\:assertNotEmpty\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Part \$screenshotId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 8 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Part \$this\-\>getProject\(\)\[''\$id''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Sites\\SitesConsoleClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/sites/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Setup deployment…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Setup site failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''activate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''deploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''domain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''frameworks'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''rules'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''sha'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 25 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''templates'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset ''useCases'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 47 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:getDeploymentDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:getLog\(\) has parameter \$logId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:getSiteDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:getTemplate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:helperGetLatestCommit\(\) should return string\|null but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:listDeployments\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:listLogs\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:setupDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:setupDuplicateDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:setupSite\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:setupSiteDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:testGetTemplate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:testListTemplates\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:getDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Sites\\SitesCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesCustomClientTest.php - - - - message: '#^Binary operation "\+" between mixed and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 5 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/sites/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Setup deployment…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Setup site failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_jwt_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 5 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 14 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Binary operation "\." between ''projectId\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertNotNull\(\) with string will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 9 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 107 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''\$updatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''APPWRITE_SITE_CPUS'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''APPWRITE_SITE_MEMORY'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''a_jwt_console'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''a_session_console'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''access\-control\-allow\-origin'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''activate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''adapter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''adapters'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''body'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 396 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''buildCommand'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''buildDuration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''buildLogs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''buildRuntime'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''buildSize'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 15 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''buildSpecification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''content\-length'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''content\-type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''deploymentCreatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''deploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''deploymentRetention'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''deployments'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''domain'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''errors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''executions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 23 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''fallbackFile'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''framework'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''frameworks'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 25 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''headers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 154 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''installCommand'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''jwt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''latestDeploymentCreatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''latestDeploymentId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''latestDeploymentStatus'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''location'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''logs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''my\-cookie\-one'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''my\-cookie\-two'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''outputDirectory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''providerOwner'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''providerRepositoryId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''providerRootDirectory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''providerVersion'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''requestMethod'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''requestPath'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''rules'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''runtimeSpecification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''set\-cookie'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''sha'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''sites'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 15 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''slug'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''sourceSize'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''specifications'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 22 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 244 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''totalSize'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''variables'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset ''x\-appwrite\-log\-id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 70 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 62 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:getDeploymentDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:getLog\(\) has parameter \$logId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:getSiteDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:getTemplate\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:helperGetLatestCommit\(\) should return string\|null but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:listDeployments\(\) has parameter \$params with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:listLogs\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:setupDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:setupDuplicateDeployment\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:setupSite\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:setupSiteDomain\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:testCookieHeader\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:testCreateDeployment\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:testCreateSiteFromTemplateBranch\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:testCreateSiteFromTemplateCommit\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:testSiteSpecifications\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$array of function array_filter expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$deploymentId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:getDeploymentDomain\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$owner of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:helperGetLatestCommit\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$siteId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:cleanupSite\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$siteId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:createVariable\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$siteId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:deleteVariable\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$siteId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:getDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$siteId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:getSite\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$siteId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:getVariable\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$siteId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:listVariables\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$siteId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:setupDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$siteId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:setupSiteDomain\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$siteId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:updateVariable\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$string of function md5 expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 38 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:cancelDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:cleanupDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:getDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 29 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$deploymentId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:updateSiteDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 15 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 99 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringNotContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$repository of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:helperGetLatestCommit\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$string of function explode expects string, string\|null given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$string of method PHPUnit\\Framework\\Assert\:\:assertStringStartsWith\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$variableId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:deleteVariable\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$variableId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:getVariable\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#2 \$variableId of method Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:updateVariable\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Parameter \#3 \$message of method PHPUnit\\Framework\\Assert\:\:assertEquals\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Part \$deploymentId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Sites\\SitesCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Sites/SitesCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/storage/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 59 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 26 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 54 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''buckets'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''bucketsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''compression'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''content\-disposition'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''content\-type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''files'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''filesStorageTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''filesTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''imageTransformations'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''imageTransformationsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''mimeType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''range'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''signature'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''sizeOriginal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 80 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''storage'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''totalSize'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 89 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageConsoleClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageConsoleClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageConsoleClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageConsoleClientTest\:\:setupBucketFile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageConsoleClientTest\:\:setupBucketFile\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageConsoleClientTest\:\:setupZstdCompressionBucket\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageConsoleClientTest\:\:setupZstdCompressionBucket\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageConsoleClientTest\:\:testGetStorageBucketUsage\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageConsoleClientTest\:\:testGetStorageUsage\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageConsoleClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 20 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Parameter \#1 \$filename of function filesize expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Parameter \#1 \$filename of function md5_file expects string, string\|false given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 9 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Parameter \#1 \$image of method Imagick\:\:readImageBlob\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Parameter \#1 \$stream of function fclose expects resource, resource\|false given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Parameter \#1 \$stream of function feof expects resource, resource\|false given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Parameter \#1 \$stream of function fread expects resource, resource\|false given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Parameter \#1 \$string of function base64_encode expects string, string\|false given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Parameter \#1 \$string of function md5 expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Parameter \#2 \$mime_type of class CURLFile constructor expects string\|null, string\|false given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 8 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Storage\\StorageConsoleClientTest\:\:\$cachedBucketFile type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Storage\\StorageConsoleClientTest\:\:\$cachedZstdBucket type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Storage\\StorageConsoleClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - message: '#^Variable \$largeFile might not be defined\.$#' identifier: variable.undefined count: 8 path: tests/e2e/Services/Storage/StorageConsoleClientTest.php - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 168 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 36 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Binary operation "\." between ''user\:'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 140 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 15 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 91 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''compression'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''content\-disposition'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''content\-type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''encryption'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''files'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 27 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''mimeType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''signature'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''sizeOriginal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 15 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 191 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''totalSize'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 208 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:addToTeam\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:addToTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:createTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:createTeam\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:createUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:getCreatedUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:getCreatedUser\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:getServerHeader\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:setupBucketFile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:setupBucketFile\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:setupDefaultPermissionsFile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:setupDefaultPermissionsFile\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:setupZstdCompressionBucket\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:setupZstdCompressionBucket\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 47 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#1 \$filename of function filesize expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#1 \$filename of function md5_file expects string, string\|false given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 9 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 27 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#1 \$image of method Imagick\:\:readImageBlob\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#1 \$stream of function fclose expects resource, resource\|false given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#1 \$stream of function feof expects resource, resource\|false given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#1 \$stream of function fread expects resource, resource\|false given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#1 \$string of function base64_encode expects string, string\|false given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#1 \$string of function md5 expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#1 \$user of method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:addToTeam\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertNotContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 19 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#2 \$mime_type of class CURLFile constructor expects string\|null, string\|false given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#2 \$string of method PHPUnit\\Framework\\Assert\:\:assertStringStartsWith\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Parameter \#2 \$team of method Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:addToTeam\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 12 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:\$cachedBucketFile type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:\$cachedDefaultPermissionsFile type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:\$cachedZstdBucket type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:\$teams type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Storage\\StorageCustomClientTest\:\:\$users type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - message: '#^Variable \$largeFile might not be defined\.$#' identifier: variable.undefined count: 8 path: tests/e2e/Services/Storage/StorageCustomClientTest.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 57 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 24 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 55 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''allowedFileExtensions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''antivirus'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''buckets'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''compression'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''content\-disposition'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''content\-type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''encryption'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''files'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''mimeType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''signature'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''sizeOriginal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 84 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''totalSize'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 93 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:setupBucket\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:setupBucket\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:setupBucketFile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:setupBucketFile\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:setupZstdCompressionBucket\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:setupZstdCompressionBucket\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 18 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Parameter \#1 \$filename of function filesize expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Parameter \#1 \$filename of function md5_file expects string, string\|false given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 9 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Parameter \#1 \$image of method Imagick\:\:readImageBlob\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Parameter \#1 \$stream of function fclose expects resource, resource\|false given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Parameter \#1 \$stream of function feof expects resource, resource\|false given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Parameter \#1 \$stream of function fread expects resource, resource\|false given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Parameter \#1 \$string of function base64_encode expects string, string\|false given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Parameter \#1 \$string of function md5 expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Parameter \#2 \$mime_type of class CURLFile constructor expects string\|null, string\|false given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 12 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:\$cachedBucket type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:\$cachedBucketFile type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:\$cachedZstdBucket type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Storage\\StorageCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - message: '#^Variable \$largeFile might not be defined\.$#' identifier: variable.undefined count: 8 path: tests/e2e/Services/Storage/StorageCustomServerTest.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 4 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Binary operation "\." between ''/tablesdb/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 58 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 63 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''columns'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''encrypt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''longtext_field'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''mediumtext_field'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 57 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''text_array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''text_field'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''text_required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''text_with_default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''varchar_array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''varchar_field'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''varchar_required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset ''varchar_with_default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 74 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\DatabasesStringTypesTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\DatabasesStringTypesTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\DatabasesStringTypesTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\DatabasesStringTypesTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\DatabasesStringTypesTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\DatabasesStringTypesTest\:\:setupDatabaseAndTable\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\DatabasesStringTypesTest\:\:setupDatabaseAndTable\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\DatabasesStringTypesTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\DatabasesStringTypesTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\DatabasesStringTypesTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\DatabasesStringTypesTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 4 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\DatabasesStringTypesTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\DatabasesStringTypesTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\DatabasesStringTypesTest\:\:\$setupCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\TablesDB\\DatabasesStringTypesTest\:\:\$setupCache through static\:\:\.$#' identifier: staticClassAccess.privateProperty count: 4 path: tests/e2e/Services/TablesDB/DatabasesStringTypesTest.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 4 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 7 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - message: '#^Call to an undefined method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:getIndexUrl\(\)\.$#' identifier: method.notFound count: 1 path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 33 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''title'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 38 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:addToTeam\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:addToTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:createCollection\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:createTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:createTeam\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:createUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:getCreatedUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:getCreatedUser\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:getServerHeader\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:permissionsProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:testReadDocuments\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:testReadDocuments\(\) has parameter \$permissions with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:testWriteDocument\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:testWriteDocumentWithPermissions\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 12 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 12 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Parameter \#3 \$recordId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:\$setupDatabaseCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:\$teams type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsGuestTest\:\:\$users type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsGuestTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 4 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 5 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between mixed and ''_'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 10 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - message: '#^Call to an undefined method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:getIndexUrl\(\)\.$#' identifier: method.notFound count: 1 path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''doconly'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''private'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''public'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''session'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 28 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''user1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 31 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:addToTeam\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:addToTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:createTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:createTeam\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:createUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:createUsers\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:getCreatedUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:getCreatedUser\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:getServerHeader\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:permissionsProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:setupDatabase\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:setupDatabase\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:testReadDocuments\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:testReadDocuments\(\) has parameter \$anyCount with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:testReadDocuments\(\) has parameter \$docOnlyCount with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:testReadDocuments\(\) has parameter \$permissions with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:testReadDocuments\(\) has parameter \$usersCount with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:\$collections type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:\$setupDatabaseCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:\$teams type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsMemberTest\:\:\$users type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsMemberTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 4 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between mixed and ''_'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - message: '#^Call to an undefined method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:getIndexUrl\(\)\.$#' identifier: method.notFound count: 1 path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''session'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 25 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''team1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''team2'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 27 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:addToTeam\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:addToTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:createCollections\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:createCollections\(\) has parameter \$teams with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:createTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:createTeam\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:createTeams\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:createUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:createUsers\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:getCreatedUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:getCreatedUser\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:getServerHeader\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:readDocumentsProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:setupDatabase\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:setupDatabase\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:testReadDocuments\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:testReadDocuments\(\) has parameter \$collection with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:testReadDocuments\(\) has parameter \$success with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:testReadDocuments\(\) has parameter \$user with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:testWriteDocuments\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:testWriteDocuments\(\) has parameter \$collection with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:testWriteDocuments\(\) has parameter \$success with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:testWriteDocuments\(\) has parameter \$user with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:writeDocumentsProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:team\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 2 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:\$collections type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:\$setupDatabaseCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:\$teams type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Permissions\\TablesDBPermissionsTeamTest\:\:\$users type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 10 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''user\:'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 62 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 364 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 53 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$sequence'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$updatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''actors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''albums'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''area'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 84 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''artist'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''birthDay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''boundary'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''bytesMax'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''bytesUsed'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''center'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''city'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''coordinates'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''count'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''coverage'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 73 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''drivers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''elements'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''encrypt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''filename'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''format'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 28 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''fullName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''home'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''integers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 155 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''lengths'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''libraries'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''library'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''libraryName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''loc'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''location'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''max'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 30 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''min'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 62 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''onDelete'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''orderNumber'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''person'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''person_one_to_many'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''players'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''point'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''price'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''relationType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''releaseYear'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 55 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 92 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''route'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''sports'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 67 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 569 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''stores'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''tagline'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''title'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 51 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 36 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''twoWay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''twoWayKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 100 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''visits'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''x\-appwrite\-cache'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset ''zones'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 119 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 42 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset 2 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 21 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset 3 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset 4 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset 5 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset 6 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset 7 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset 8 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset 9 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 281 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 730 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getCacheKey\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getDocumentsList\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupAttributes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupAttributes\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupCollection\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupCollection\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupDatabase\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupDatabase\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupDocuments\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupDocuments\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupFulltextSearchDocuments\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupFulltextSearchDocuments\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupIndexes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupIndexes\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupOneToManyRelationship\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupOneToManyRelationship\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupOneToOneRelationship\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:setupOneToOneRelationship\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Offset ''body'' might not exist on array\|null\.$#' - identifier: offsetAccess.notFound - count: 51 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Offset ''headers'' might not exist on array\|null\.$#' - identifier: offsetAccess.notFound - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 132 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getDatabaseUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 35 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 296 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 177 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 28 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:waitForAllIndexes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 36 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 76 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 251 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$start of static method Utopia\\Database\\Query\:\:createdBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$start of static method Utopia\\Database\\Query\:\:updatedBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 17 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:createdAfter\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:createdBefore\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:updatedAfter\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:updatedBefore\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 43 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 20 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 68 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 35 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 293 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 166 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 27 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:waitForAllIndexes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 34 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$end of static method Utopia\\Database\\Query\:\:createdBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$end of static method Utopia\\Database\\Query\:\:updatedBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 82 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, mixed given\.$#' - identifier: argument.type - count: 22 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#3 \$message of method PHPUnit\\Framework\\Assert\:\:assertEquals\(\) expects string, int given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Parameter \#3 \$recordId of method Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:getRecordUrl\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 43 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:\$attributesCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:\$collectionCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:\$databaseCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:\$documentsCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:\$fulltextDocsCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:\$indexesCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:\$oneToManyCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:\$oneToOneCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBConsoleClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - message: '#^Variable \$library might not be defined\.$#' identifier: variable.undefined @@ -73506,1044 +1674,6 @@ parameters: count: 4 path: tests/e2e/Services/TablesDB/TablesDBConsoleClientTest.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 10 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Binary operation "\." between ''user\:'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 63 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''\$databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 364 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 53 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''\$sequence'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''\$updatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''actors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''albums'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''area'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 84 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''artist'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''birthDay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''boundary'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''bytesMax'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''bytesUsed'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''center'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''city'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''coordinates'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''count'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''coverage'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 73 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''drivers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''elements'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''encrypt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''filename'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''format'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 28 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''fullName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''home'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''integers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 155 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''lengths'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''libraries'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''library'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''libraryName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''loc'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''location'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''max'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 30 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''min'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 62 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''onDelete'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''orderNumber'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''person'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''person_one_to_many'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''players'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''point'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''price'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''relationType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''releaseYear'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 55 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 92 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''route'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''sports'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 67 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 569 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''stores'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''tagline'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''title'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 51 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 36 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''twoWay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''twoWayKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 100 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''visits'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''x\-appwrite\-cache'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset ''zones'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 119 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 42 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset 2 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 21 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset 3 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset 4 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset 5 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset 6 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset 7 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset 8 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset 9 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 281 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 730 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getCacheKey\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getDocumentsList\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupAttributes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupAttributes\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupCollection\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupCollection\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupDatabase\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupDatabase\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupDocuments\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupDocuments\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupFulltextSearchDocuments\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupFulltextSearchDocuments\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupIndexes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupIndexes\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupOneToManyRelationship\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupOneToManyRelationship\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupOneToOneRelationship\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:setupOneToOneRelationship\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Offset ''body'' might not exist on array\|null\.$#' - identifier: offsetAccess.notFound - count: 51 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Offset ''headers'' might not exist on array\|null\.$#' - identifier: offsetAccess.notFound - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 132 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getDatabaseUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 35 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 296 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 177 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 28 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:waitForAllIndexes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 36 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 76 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 251 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$start of static method Utopia\\Database\\Query\:\:createdBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$start of static method Utopia\\Database\\Query\:\:updatedBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 17 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:createdAfter\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:createdBefore\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:updatedAfter\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:updatedBefore\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 43 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 20 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 68 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 35 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 293 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 166 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 27 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:waitForAllIndexes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 34 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$end of static method Utopia\\Database\\Query\:\:createdBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$end of static method Utopia\\Database\\Query\:\:updatedBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 82 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, mixed given\.$#' - identifier: argument.type - count: 22 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#3 \$message of method PHPUnit\\Framework\\Assert\:\:assertEquals\(\) expects string, int given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Parameter \#3 \$recordId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:getRecordUrl\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 43 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:\$attributesCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:\$collectionCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:\$databaseCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:\$documentsCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:\$fulltextDocsCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:\$indexesCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:\$oneToManyCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:\$oneToOneCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - message: '#^Variable \$library might not be defined\.$#' identifier: variable.undefined @@ -74556,1050 +1686,6 @@ parameters: count: 4 path: tests/e2e/Services/TablesDB/TablesDBCustomClientTest.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 10 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Binary operation "\." between ''user\:'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 62 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''\$databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 364 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 53 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''\$sequence'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''\$updatedAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''actors'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''albums'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''area'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''array'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 84 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''artist'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''birthDay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''boundary'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''bytesMax'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''bytesUsed'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''center'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''city'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''coordinates'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''count'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''coverage'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''default'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 73 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''drivers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''duration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''elements'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''encrypt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''filename'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''format'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 28 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''fullName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''home'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''integers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 155 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''lengths'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''libraries'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''library'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''libraryName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''loc'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''location'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''max'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 30 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''min'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 62 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''onDelete'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''orderNumber'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''person'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''person_one_to_many'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''players'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''point'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''price'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''relationType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''releaseYear'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 55 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''required'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 92 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''route'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''sports'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 67 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 569 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''stores'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''tagline'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''title'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 51 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 36 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''twoWay'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''twoWayKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 100 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''visits'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''x\-appwrite\-cache'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset ''zones'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 119 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 42 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset 2 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 21 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset 3 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset 4 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset 5 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset 6 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset 7 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset 8 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset 9 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 281 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 730 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getCacheKey\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getDocumentsList\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupAttributes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupAttributes\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupCollection\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupCollection\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupDatabase\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupDatabase\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupDocuments\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupDocuments\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupFulltextSearchDocuments\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupFulltextSearchDocuments\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupIndexes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupIndexes\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupOneToManyRelationship\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupOneToManyRelationship\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupOneToOneRelationship\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:setupOneToOneRelationship\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Offset ''body'' might not exist on array\|null\.$#' - identifier: offsetAccess.notFound - count: 51 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Offset ''headers'' might not exist on array\|null\.$#' - identifier: offsetAccess.notFound - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 132 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getDatabaseUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 35 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 296 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 177 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 28 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:waitForAllIndexes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 36 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$id of static method Utopia\\Database\\Helpers\\ID\:\:custom\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 76 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 251 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$start of static method Utopia\\Database\\Query\:\:createdBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$start of static method Utopia\\Database\\Query\:\:updatedBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 17 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:createdAfter\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:createdBefore\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:updatedAfter\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of static method Utopia\\Database\\Query\:\:updatedBefore\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 43 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 20 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 68 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 35 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 293 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 166 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 27 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:waitForAllIndexes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:waitForAttribute\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 34 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$end of static method Utopia\\Database\\Query\:\:createdBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$end of static method Utopia\\Database\\Query\:\:updatedBetween\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 82 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, mixed given\.$#' - identifier: argument.type - count: 22 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#3 \$message of method PHPUnit\\Framework\\Assert\:\:assertEquals\(\) expects string, int given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Parameter \#3 \$recordId of method Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:getRecordUrl\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 43 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:\$attributesCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:\$collectionCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:\$databaseCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:\$documentsCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:\$fulltextDocsCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:\$indexesCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:\$oneToManyCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:\$oneToOneCache type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\TablesDBCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - message: '#^Variable \$library might not be defined\.$#' identifier: variable.undefined @@ -75612,3030 +1698,6 @@ parameters: count: 4 path: tests/e2e/Services/TablesDB/TablesDBCustomServerTest.php - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 4 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 7 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 21 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot access offset ''counter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot access offset ''data'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 34 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 55 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 12 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Parameter \#1 \$transactionId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:getTransactionUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 10 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 12 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBACIDTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBACIDTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 4 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 13 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 19 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 76 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''operations'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 91 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset ''transactions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 91 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionPermissionsCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionPermissionsCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionPermissionsCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionPermissionsCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionPermissionsCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionPermissionsCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionPermissionsCustomClientTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$transactionId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionPermissionsCustomClientTest\:\:getTransactionUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 27 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 10 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionPermissionsCustomClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionPermissionsCustomClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionPermissionsCustomClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 11 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionPermissionsCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Static property Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionPermissionsCustomClientTest\:\:\$permissionsDatabase \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionPermissionsCustomClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 8 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 145 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''balance'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''category'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''counter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''expiresAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''flag'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''items'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''list1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''list2'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''list3'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''operations'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''priority'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''score'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 26 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 237 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''tags'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 439 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 129 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 63 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$transactionId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:getTransactionUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 91 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 10 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 129 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 63 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Parameter \#3 \$recordId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:getRecordUrl\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Part \$transactionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Static property Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:\$sharedCollectionId \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Static property Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsConsoleClientTest\:\:\$sharedDatabaseId \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsConsoleClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 8 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 7 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''\$databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 145 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''balance'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''category'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''counter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''expiresAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''flag'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''items'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''list1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''list2'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''list3'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''operations'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''priority'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''score'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 26 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 237 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''tags'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 439 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 129 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 63 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#1 \$transactionId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:getTransactionUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 91 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 10 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 129 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 63 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Parameter \#3 \$recordId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:getRecordUrl\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Part \$transactionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Static property Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:\$sharedCollectionId \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Static property Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomClientTest\:\:\$sharedDatabaseId \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 8 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''\$databaseId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 145 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''balance'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''category'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''counter'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''error'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''expiresAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''flag'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''indexes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''items'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''list1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''list2'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''list3'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''operations'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''priority'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''score'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 26 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 237 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''tags'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset ''value'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot access offset string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 439 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:waitForAttributes\(\) has parameter \$attributeKeys with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:getContainerUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 129 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 63 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#1 \$transactionId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:getTransactionUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 91 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 10 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:getIndexUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:getRecordUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 129 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:getSchemaUrl\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 63 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:waitForAllAttributes\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 40 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#2 \$containerId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:waitForIndex\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Parameter \#3 \$recordId of method Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:getRecordUrl\(\) expects string\|null, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Part \$attr\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Part \$attribute\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Part \$container\[''headers''\]\[''status\-code''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Part \$index\[''key''\] \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Part \$transactionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Static property Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:\$sharedCollectionId \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Static property Tests\\E2E\\Services\\TablesDB\\Transactions\\TablesDBTransactionsCustomServerTest\:\:\$sharedDatabaseId \(string\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/e2e/Services/TablesDB/Transactions/TablesDBTransactionsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/teams/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Email not found for…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 13 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 16 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 34 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''confirm'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''emailVerification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''funcKey1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''funcKey2'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''joined'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''memberships'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 35 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''mfa'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''prefs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''roles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 87 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''teamId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''teamName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''teams'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 36 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''userEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset ''userName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 34 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 87 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsConsoleClientTest\:\:createAndAcceptMembershipHelper\(\) should return array\{teamUid\: string, teamName\: string, secret\: string, membershipUid\: string, userUid\: string, email\: string, name\: string, session\: string\} but returns array\{teamUid\: string, teamName\: string, secret\: mixed, membershipUid\: mixed, userUid\: mixed, email\: non\-falsy\-string, name\: ''Friend User'', session\: mixed\}\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsConsoleClientTest\:\:createPendingMembershipHelper\(\) should return array\{teamUid\: string, teamName\: string, secret\: string, membershipUid\: string, userUid\: string, email\: string, name\: string\} but returns array\{teamUid\: mixed, teamName\: mixed, secret\: mixed, membershipUid\: mixed, userUid\: mixed, email\: non\-falsy\-string, name\: ''Friend User''\}\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsConsoleClientTest\:\:createTeamHelper\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsConsoleClientTest\:\:createTeamHelper\(\) should return array\{teamUid\: string, teamName\: string\} but returns array\{teamUid\: mixed, teamName\: mixed\}\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$address of method Tests\\E2E\\Scopes\\Scope\:\:getLastEmailByAddress\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$html of method Tests\\E2E\\Scopes\\Scope\:\:extractQueryParamsFromEmailLink\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 13 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 15 - path: tests/e2e/Services/Teams/TeamsConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/teams/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Email not found for…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 13 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 11 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 15 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 45 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''confirm'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''emailVerification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''funcKey1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''funcKey2'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''joined'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''memberships'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 46 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''mfa'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 15 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''prefs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''roles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 97 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''teamId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''teamName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''teams'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 39 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''userEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset ''userName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 46 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 98 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomClientTest\:\:createAndAcceptMembershipHelper\(\) should return array\{teamUid\: string, teamName\: string, secret\: string, membershipUid\: string, userUid\: string, email\: string, name\: string, session\: string\} but returns array\{teamUid\: string, teamName\: string, secret\: mixed, membershipUid\: mixed, userUid\: mixed, email\: non\-falsy\-string, name\: ''Friend User'', session\: mixed\}\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomClientTest\:\:createPendingMembershipHelper\(\) should return array\{teamUid\: string, teamName\: string, secret\: string, membershipUid\: string, userUid\: string, email\: string, name\: string\} but returns array\{teamUid\: mixed, teamName\: mixed, secret\: mixed, membershipUid\: mixed, userUid\: mixed, email\: non\-falsy\-string, name\: ''Friend User''\}\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomClientTest\:\:createTeamHelper\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomClientTest\:\:createTeamHelper\(\) should return array\{teamUid\: string, teamName\: string\} but returns array\{teamUid\: mixed, teamName\: mixed\}\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Parameter \#1 \$address of method Tests\\E2E\\Scopes\\Scope\:\:getLastEmailByAddress\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Parameter \#1 \$html of method Tests\\E2E\\Scopes\\Scope\:\:extractQueryParamsFromEmailLink\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 15 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 16 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Teams\\TeamsCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/teams/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 10 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 38 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''confirm'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''funcKey1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''funcKey2'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''joined'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''memberships'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''mfa'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''prefs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''roles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 65 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''teamId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''teamName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''teams'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 37 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''userEmail'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset ''userName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot access offset 2 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 66 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomServerTest\:\:createServerMembershipHelper\(\) should return array\{teamUid\: string, userUid\: string, membershipUid\: string\} but returns array\{teamUid\: string, userUid\: mixed, membershipUid\: mixed\}\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomServerTest\:\:createTeamHelper\(\) has parameter \$roles with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomServerTest\:\:createTeamHelper\(\) should return array\{teamUid\: string, teamName\: string\} but returns array\{teamUid\: mixed, teamName\: mixed\}\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomServerTest\:\:testMembershipDeletedWhenTeamDeleted\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Teams\\TeamsCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 8 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Teams\\TeamsCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Teams\\TeamsCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Teams/TeamsCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 13 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/tokens/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/tokens/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Failed to decode…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Binary operation "\." between mixed and ''\:'' results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 20 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\) with array and ''JWT payload should…'' will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 4 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 29 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Cannot access offset ''content\-type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Cannot access offset ''expire'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Cannot access offset ''resourceId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Cannot access offset ''resourceType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 15 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 28 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 39 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensConsoleClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensConsoleClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensConsoleClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensConsoleClientTest\:\:setupBucketAndFile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensConsoleClientTest\:\:setupToken\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensConsoleClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Parameter \#1 \$image of method Imagick\:\:readImageBlob\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Parameter \#1 \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Parameter \#1 \$token of method Ahc\\Jwt\\JWT\:\:decode\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Part \$bucketId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Part \$fileId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Tokens\\TokensConsoleClientTest\:\:\$bucketAndFileData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Tokens\\TokensConsoleClientTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Tokens\\TokensConsoleClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Tokens\\TokensConsoleClientTest\:\:\$tokenData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\Tokens\\TokensConsoleClientTest\:\:\$bucketAndFileData through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -78648,462 +1710,12 @@ parameters: count: 4 path: tests/e2e/Services/Tokens/TokensConsoleClientTest.php - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 11 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/tokens/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Binary operation "\." between mixed and ''\:'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 13 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Cannot access offset ''content\-type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Cannot access offset ''resourceId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Cannot access offset ''resourceType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 20 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 26 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensCustomClientTest\:\:setupBucketAndFile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Parameter \#1 \$image of method Imagick\:\:readImageBlob\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Part \$bucketId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Part \$fileId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Tokens\\TokensCustomClientTest\:\:\$bucketAndFileData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Tokens\\TokensCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\Tokens\\TokensCustomClientTest\:\:\$bucketAndFileData through static\:\:\.$#' identifier: staticClassAccess.privateProperty count: 4 path: tests/e2e/Services/Tokens/TokensCustomClientTest.php - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 13 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/tokens/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 4 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/tokens/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Binary operation "\." between mixed and ''\:'' results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 17 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 25 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Cannot access offset ''content\-type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Cannot access offset ''expire'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Cannot access offset ''resourceId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Cannot access offset ''resourceType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 29 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 39 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensCustomServerTest\:\:setupBucketAndFile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensCustomServerTest\:\:setupToken\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Tokens\\TokensCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Parameter \#1 \$image of method Imagick\:\:readImageBlob\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Part \$bucketId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Part \$fileId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Tokens\\TokensCustomServerTest\:\:\$bucketAndFileData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Tokens\\TokensCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Tokens\\TokensCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Tokens\\TokensCustomServerTest\:\:\$tokenData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\Tokens\\TokensCustomServerTest\:\:\$bucketAndFileData through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -79116,690 +1728,6 @@ parameters: count: 4 path: tests/e2e/Services/Tokens/TokensCustomServerTest.php - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 10 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Cannot access offset ''password'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Cannot access offset ''range'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Cannot access offset ''sessions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Cannot access offset ''sessionsTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Cannot access offset ''users'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Cannot access offset ''usersTotal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 12 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersConsoleClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersConsoleClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersConsoleClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersConsoleClientTest\:\:testCreateUserWithoutPasswordThenSetPassword\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersConsoleClientTest\:\:testGetUsersUsage\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersConsoleClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Users\\UsersConsoleClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersConsoleClientTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 2 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/teams/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/users/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 59 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 50 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''costCpu'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''costMemory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''costParallel'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 16 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''emailVerification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''expire'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''expired'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''funcKey1'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''funcKey2'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''hash'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''hashOptions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''identifier'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''jwt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''labels'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''length'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''logs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''memberships'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''password'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 15 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''passwordUpdate'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''phone'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''provider'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''providerId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''providers'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''registration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''roles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''salt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''saltSeparator'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''signerKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 134 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''targets'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''users'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 69 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset ''version'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 22 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 160 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:ensureUserEmailUpdated\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:ensureUserNameUpdated\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:ensureUserNumberUpdated\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:setupUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:setupUser\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:setupUserTarget\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:setupUserTarget\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:testUpdateUserLabels\(\) has parameter \$expectedLabels with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:testUpdateUserLabels\(\) has parameter \$labels with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:testUserJWT\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:userLabelsProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Parameter \#1 \$array of function array_column expects array, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Parameter \#1 \$haystack of function strpos expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Parameter \#1 \$json of function json_decode expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Parameter \#1 \$string of function strlen expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Parameter \#1 \$string of function substr expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 19 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Parameter \#2 \$string of method PHPUnit\\Framework\\Assert\:\:assertStringStartsWith\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Parameter \#2 \$values of static method Utopia\\Database\\Query\:\:equal\(\) expects array\\|bool\|float\|int\|string\>, array\ given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 16 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:\$cachedHashedPasswordUsers type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:\$cachedUser type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:\$cachedUserTarget type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Users/UsersCustomServerTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\Users\\UsersCustomServerTest\:\:\$cachedHashedPasswordUsers through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -79836,312 +1764,6 @@ parameters: count: 3 path: tests/e2e/Services/Users/UsersCustomServerTest.php - - - message: '#^Binary operation "\." between ''/functions/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 9 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 9 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''branches'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''buildCommand'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''commands'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''contents'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''entrypoint'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''framework'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''frameworkProviderRepositories'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''installCommand'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''installationId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''isDirectory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 21 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''organization'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''outputDirectory'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''private'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''provider'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''providerBranch'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''providerRepositoryId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''runtime'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''runtimeProviderRepositories'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''size'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 38 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 13 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 19 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 43 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSConsoleClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSConsoleClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSConsoleClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSConsoleClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSConsoleClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSConsoleClientTest\:\:setupFunctionUsingVCS\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSConsoleClientTest\:\:setupFunctionUsingVCS\(\) should return array but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSConsoleClientTest\:\:setupInstallation\(\) should return string but returns mixed\.$#' - identifier: return.type - count: 2 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSConsoleClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Parameter \#1 \$identifier of static method Utopia\\Database\\Helpers\\Role\:\:user\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Parameter \#2 \$privateKey of method Utopia\\VCS\\Adapter\\Git\\GitHub\:\:initializeVariables\(\) expects string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Possibly invalid array key type mixed\.$#' - identifier: offsetAccess.invalidOffset - count: 8 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\VCS\\VCSConsoleClientTest\:\:\$cachedFunctionData type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\VCS\\VCSConsoleClientTest\:\:\$cachedInstallationId type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\VCS\\VCSConsoleClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - message: '#^Unsafe access to private property Tests\\E2E\\Services\\VCS\\VCSConsoleClientTest\:\:\$cachedFunctionData through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -80154,2580 +1776,24 @@ parameters: count: 4 path: tests/e2e/Services/VCS/VCSConsoleClientTest.php - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 9 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\VCS\\VCSCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 9 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\VCS\\VCSCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\VCS\\VCSCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\VCS\\VCSCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/VCS/VCSCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/account/sessions/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/databases/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 15 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/functions/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 10 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/tablesdb/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 14 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/teams/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 7 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Account creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Session creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 19 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 12 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between ''databases\.'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 34 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between mixed and non\-empty\-string\|false results in an error\.$#' - identifier: binaryOp.invalid - count: 16 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 50 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 107 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 14 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''Content\-Type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 38 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''User\-Agent'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 38 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''X\-Appwrite\-Webhook\-Events'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 289 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''X\-Appwrite\-Webhook\-Id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 38 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''X\-Appwrite\-Webhook\-Project\-Id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 38 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''X\-Appwrite\-Webhook\-Signature'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 38 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''X\-Appwrite\-Webhook\-User\-Id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 34 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''address'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''attempts'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''attributes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''clientCode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''clientEngine'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''clientEngineVersion'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''clientName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''clientType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''clientVersion'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''columns'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''confirm'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''countryCode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''countryName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''current'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''deviceBrand'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''deviceModel'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''deviceName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''emailVerification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''expire'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 7 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''firstName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''invited'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''joined'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 17 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''lastName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''message'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''mimeType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 19 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''osCode'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''osName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''osVersion'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''prefs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''registration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''roles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 12 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''signature'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''sizeOriginal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 61 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''teamId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''to'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 11 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot access offset non\-falsy\-string on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 5 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 98 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:awaitDeploymentIsBuilt\(\) has parameter \$deploymentId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:awaitDeploymentIsBuilt\(\) has parameter \$functionId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:getWebhookSignature\(\) has parameter \$webhook with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:setupAccountWithSession\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:setupBucketFile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:setupCollectionWithAttributes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:setupDocument\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:setupRow\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:setupStorageBucket\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:setupTableWithColumns\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:setupTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:setupTeamMembership\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Parameter \#1 \$bucketId of method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:setupBucketFile\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:setupDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:setupRow\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Parameter \#1 \$html of method Tests\\E2E\\Scopes\\Scope\:\:extractQueryParamsFromEmailLink\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Parameter \#1 \$teamId of method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:setupTeamMembership\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Parameter \#2 \$collectionId of method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:setupDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 289 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Parameter \#2 \$signatureKey of static method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:getWebhookSignature\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 23 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Parameter \#2 \$tableId of method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:setupRow\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Parameter \#3 \$key of function hash_hmac expects string, mixed given\.$#' - identifier: argument.type - count: 15 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Parameter \#3 \$message of method PHPUnit\\Framework\\Assert\:\:assertEquals\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Part \$actorsId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 58 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Part \$bucketId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 27 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Part \$databaseId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 70 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Part \$documentId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 20 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Part \$fileId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 15 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Part \$id \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 70 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Part \$membershipId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 10 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Part \$membershipUid \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 7 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Part \$recoveryId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 10 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Part \$rowId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 10 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Part \$sessionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 15 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Part \$teamId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 21 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Part \$teamUid \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 8 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Part \$verificationId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 10 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Webhooks\\WebhooksCustomClientTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php - - - - message: '#^Binary operation "\." between ''/databases/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 20 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/functions/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 8 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/projects/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 10 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/storage/buckets/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/tablesdb/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 19 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/teams/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Binary operation "\." between ''/users/'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Key creation failed…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Project creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Binary operation "\." between ''Team creation…'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Binary operation "\." between ''a_session_console\='' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 12 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Binary operation "\." between ''databases\.'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 54 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Binary operation "\." between mixed and non\-empty\-string\|false results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 47 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''\$createdAt'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 111 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''\$permissions'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 18 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''Content\-Type'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 44 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''User\-Agent'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 44 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''X\-Appwrite\-Webhook\-Events'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 233 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''X\-Appwrite\-Webhook\-Id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 44 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''X\-Appwrite\-Webhook\-Project\-Id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 44 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''X\-Appwrite\-Webhook\-Signature'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 44 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''X\-Appwrite\-Webhook\-User\-Id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 32 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''a'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''address'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''attempts'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''attributes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''columns'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''confirm'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''email'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''emailVerification'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''enabled'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 4 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''firstName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''invited'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''key'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 22 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''lastName'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''mimeType'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''name'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 21 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''prefs'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''registration'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''roles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''signature'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''signatureKey'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''sizeOriginal'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''status'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 8 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''status\-code'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 63 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''teamId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''to'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''total'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 6 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset ''userId'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot access offset 1 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Cannot call method call\(\) on Tests\\E2E\\Client\|null\.$#' - identifier: method.nonObject - count: 100 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:awaitDeploymentIsBuilt\(\) has parameter \$deploymentId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:awaitDeploymentIsBuilt\(\) has parameter \$functionId with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:createNewProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:getHeaders\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:getNewKey\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:getNewKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:getProject\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:getWebhookSignature\(\) has parameter \$webhook with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupBucketFile\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupCollectionWithAttributes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupDeployment\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupDocument\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupFunction\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupRow\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupStorageBucket\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupTableWithColumns\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupTeam\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupTeamMembership\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupUser\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:updateProjectinvalidateSessionsProperty\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Parameter \#1 \$bucketId of method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupBucketFile\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Parameter \#1 \$databaseId of method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupRow\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Parameter \#1 \$filename of class CURLFile constructor expects string, string\|false given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Parameter \#1 \$functionId of method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupDeployment\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Parameter \#1 \$html of method Tests\\E2E\\Scopes\\Scope\:\:extractQueryParamsFromEmailLink\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Parameter \#2 \$collectionId of method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupDocument\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 4 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 233 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Parameter \#2 \$signatureKey of static method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:getWebhookSignature\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 43 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Parameter \#2 \$tableId of method Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:setupRow\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Parameter \#3 \$key of function hash_hmac expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Parameter \#3 \$message of method PHPUnit\\Framework\\Assert\:\:assertEquals\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Part \$actorsId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 74 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Part \$bucketId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 27 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Part \$databaseId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 98 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Part \$deploymentId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 3 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Part \$documentId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 20 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Part \$executionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 2 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Part \$fileId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 15 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Part \$functionId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Part \$id \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 37 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Part \$membershipId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 10 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Part \$rowId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 10 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Part \$teamId \(mixed\) of encapsed string cannot be cast to string\.$#' - identifier: encapsedStringPart.nonString - count: 21 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:\$key type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Property Tests\\E2E\\Services\\Webhooks\\WebhooksCustomServerTest\:\:\$project type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php - - - - message: '#^Trait Tests\\E2E\\Traits\\DatabaseFixture is used zero times and is not analysed\.$#' - identifier: trait.unused - count: 1 - path: tests/e2e/Traits/DatabaseFixture.php - - - - message: '#^Method Appwrite\\Tests\\Async\\Eventually\:\:evaluate\(\) never returns null so it can be removed from the return type\.$#' - identifier: return.unusedType - count: 1 - path: tests/extensions/Async/Eventually.php - - - - message: '#^Method Appwrite\\Tests\\RetrySubscriber\:\:getRetryCountForTest\(\) should return int but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/extensions/RetrySubscriber.php - - - - message: '#^Method Appwrite\\Tests\\RetrySubscriber\:\:handleTestFailure\(\) has parameter \$test with no type specified\.$#' - identifier: missingType.parameter - count: 1 - path: tests/extensions/RetrySubscriber.php - - - - message: '#^Static property Appwrite\\Tests\\RetrySubscriber\:\:\$pendingRetries is never read, only written\.$#' - identifier: property.onlyWritten - count: 1 - path: tests/extensions/RetrySubscriber.php - - - - message: '#^Cannot access offset ''apps'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/unit/Auth/KeyTest.php - - - - message: '#^Cannot access offset ''guests'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/unit/Auth/KeyTest.php - - - - message: '#^Cannot access offset ''scopes'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/unit/Auth/KeyTest.php - - - - message: '#^Method Tests\\Unit\\Auth\\KeyTest\:\:generateKey\(\) has parameter \$extra with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Auth/KeyTest.php - - - - message: '#^Method Tests\\Unit\\Auth\\KeyTest\:\:generateKey\(\) has parameter \$scopes with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Auth/KeyTest.php - - - - message: '#^Parameter \#2 \.\.\.\$arrays of function array_merge expects array, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/unit/Auth/KeyTest.php - - - - message: '#^Parameter \$key of class Ahc\\Jwt\\JWT constructor expects resource\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: tests/unit/Auth/KeyTest.php - - message: '#^Unsafe call to private method Tests\\Unit\\Auth\\KeyTest\:\:generateKey\(\) through static\:\:\.$#' identifier: staticClassAccess.privateMethod count: 3 path: tests/unit/Auth/KeyTest.php - - - message: '#^Cannot call method isValid\(\) on Appwrite\\Auth\\Validator\\PasswordDictionary\|null\.$#' - identifier: method.nonObject - count: 6 - path: tests/unit/Auth/Validator/PasswordDictionaryTest.php - - - - message: '#^Cannot call method isValid\(\) on Appwrite\\Auth\\Validator\\Password\|null\.$#' - identifier: method.nonObject - count: 11 - path: tests/unit/Auth/Validator/PasswordTest.php - - - - message: '#^Cannot call method isValid\(\) on Appwrite\\Auth\\Validator\\PersonalData\|null\.$#' - identifier: method.nonObject - count: 45 - path: tests/unit/Auth/Validator/PersonalDataTest.php - - - - message: '#^Cannot call method isValid\(\) on Appwrite\\Auth\\Validator\\Phone\|null\.$#' - identifier: method.nonObject - count: 25 - path: tests/unit/Auth/Validator/PhoneTest.php - - - - message: '#^Cannot call method getClient\(\) on Appwrite\\Detector\\Detector\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/unit/Detector/DetectorTest.php - - - - message: '#^Cannot call method getDevice\(\) on Appwrite\\Detector\\Detector\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/unit/Detector/DetectorTest.php - - - - message: '#^Cannot call method getOS\(\) on Appwrite\\Detector\\Detector\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/unit/Detector/DetectorTest.php - - - - message: '#^Cannot call method getNetworks\(\) on Appwrite\\Docker\\Compose\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/unit/Docker/ComposeTest.php - - - - message: '#^Cannot call method getService\(\) on Appwrite\\Docker\\Compose\|null\.$#' - identifier: method.nonObject - count: 4 - path: tests/unit/Docker/ComposeTest.php - - - - message: '#^Cannot call method getServices\(\) on Appwrite\\Docker\\Compose\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/unit/Docker/ComposeTest.php - - - - message: '#^Cannot call method getVolumes\(\) on Appwrite\\Docker\\Compose\|null\.$#' - identifier: method.nonObject - count: 4 - path: tests/unit/Docker/ComposeTest.php - - - - message: '#^Cannot call method export\(\) on Appwrite\\Docker\\Env\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/unit/Docker/EnvTest.php - - - - message: '#^Cannot call method getVar\(\) on Appwrite\\Docker\\Env\|null\.$#' - identifier: method.nonObject - count: 5 - path: tests/unit/Docker/EnvTest.php - - - - message: '#^Cannot call method setVar\(\) on Appwrite\\Docker\\Env\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/unit/Docker/EnvTest.php - - message: '#^Call to an undefined method Utopia\\Queue\\Publisher\:\:getEvents\(\)\.$#' identifier: method.notFound count: 1 path: tests/unit/Event/EventTest.php - - - message: '#^Cannot call method getClass\(\) on Appwrite\\Event\\Event\|null\.$#' - identifier: method.nonObject - count: 2 - path: tests/unit/Event/EventTest.php - - - - message: '#^Cannot call method getParam\(\) on Appwrite\\Event\\Event\|null\.$#' - identifier: method.nonObject - count: 8 - path: tests/unit/Event/EventTest.php - - - - message: '#^Cannot call method getQueue\(\) on Appwrite\\Event\\Event\|null\.$#' - identifier: method.nonObject - count: 3 - path: tests/unit/Event/EventTest.php - - - - message: '#^Cannot call method reset\(\) on Appwrite\\Event\\Event\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/unit/Event/EventTest.php - - - - message: '#^Cannot call method setClass\(\) on Appwrite\\Event\\Event\|null\.$#' - identifier: method.nonObject - count: 2 - path: tests/unit/Event/EventTest.php - - - - message: '#^Cannot call method setParam\(\) on Appwrite\\Event\\Event\|null\.$#' - identifier: method.nonObject - count: 2 - path: tests/unit/Event/EventTest.php - - - - message: '#^Cannot call method setQueue\(\) on Appwrite\\Event\\Event\|null\.$#' - identifier: method.nonObject - count: 2 - path: tests/unit/Event/EventTest.php - - - - message: '#^Cannot call method trigger\(\) on Appwrite\\Event\\Event\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/unit/Event/EventTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/unit/Event/EventTest.php - - - - message: '#^Cannot access an offset on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/unit/Event/MockPublisher.php - - - - message: '#^Method Tests\\Unit\\Event\\MockPublisher\:\:enqueue\(\) has parameter \$payload with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Event/MockPublisher.php - - - - message: '#^Method Tests\\Unit\\Event\\MockPublisher\:\:getEvents\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/unit/Event/MockPublisher.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/unit/Event/MockPublisher.php - - - - message: '#^Property Tests\\Unit\\Event\\MockPublisher\:\:\$events type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Event/MockPublisher.php - - - - message: '#^Cannot call method isValid\(\) on Appwrite\\Event\\Validator\\Event\|null\.$#' - identifier: method.nonObject - count: 42 - path: tests/unit/Event/Validator/EventValidatorTest.php - - - - message: '#^Cannot call method isValid\(\) on Appwrite\\Event\\Validator\\FunctionEvent\|null\.$#' - identifier: method.nonObject - count: 42 - path: tests/unit/Event/Validator/FunctionEventValidatorTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringNotContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/unit/Filter/BranchDomainTest.php - - - - message: '#^Parameter \#2 \$string of method PHPUnit\\Framework\\Assert\:\:assertStringEndsWith\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/unit/Filter/BranchDomainTest.php - - - - message: '#^Parameter \#2 \$string of method PHPUnit\\Framework\\Assert\:\:assertStringStartsWith\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 7 - path: tests/unit/Filter/BranchDomainTest.php - - - - message: '#^Method Tests\\Unit\\Functions\\Validator\\HeadersBench\:\:benchHeadersValidator\(\) has parameter \$data with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Functions/Validator/HeadersBench.php - - - - message: '#^Method Tests\\Unit\\Functions\\Validator\\HeadersBench\:\:providers\(\) return type has no value type specified in iterable type iterable\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Functions/Validator/HeadersBench.php - - - - message: '#^Cannot call method isValid\(\) on Appwrite\\Functions\\Validator\\Headers\|null\.$#' - identifier: method.nonObject - count: 23 - path: tests/unit/Functions/Validator/HeadersTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 3 - path: tests/unit/General/CollectionsTest.php - - - - message: '#^Cannot access offset ''\$id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/unit/General/CollectionsTest.php - - - - message: '#^Parameter \#2 \$array of function array_key_exists expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/unit/General/CollectionsTest.php - - - - message: '#^Property Tests\\Unit\\General\\CollectionsTest\:\:\$collections \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/unit/General/CollectionsTest.php - - - - message: '#^Property Tests\\Unit\\General\\CollectionsTest\:\:\$collections type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/General/CollectionsTest.php - - - - message: '#^Cannot call method getModel\(\) on Appwrite\\Utopia\\Response\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/unit/GraphQL/BuilderTest.php - - - - message: '#^Method Tests\\Unit\\GraphQL\\BuilderTest\:\:testCreateTypeMapping\(\) has no return type specified\.$#' - identifier: missingType.return - count: 1 - path: tests/unit/GraphQL/BuilderTest.php - - - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' - identifier: foreach.nonIterable - count: 6 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Binary operation "%%" between mixed and 2 results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Binary operation "\*" between 2 and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Binary operation "\*" between int\<0, max\> and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 2 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Binary operation "\-" between mixed and int\<0, max\> results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Binary operation "\." between ''member'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Binary operation "\." between ''team'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Binary operation "\." between ''user'' and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' - identifier: binaryOp.invalid - count: 1 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Binary operation "/" between mixed and int\<0, max\> results in an error\.$#' - identifier: binaryOp.invalid - count: 3 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\) with array will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 2 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Cannot use \+\+ on mixed\.$#' - identifier: postInc.type - count: 2 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Method Tests\\Unit\\Messaging\\MessagingChannelsTest\:\:getAuthorization\(\) should return Utopia\\Database\\Validator\\Authorization but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Parameter \#1 \$expectedCount of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects int, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Parameter \#1 \$suffix of method PHPUnit\\Framework\\Assert\:\:assertStringEndsWith\(\) expects non\-empty\-string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Parameter \#1 \$value of function count expects array\|Countable, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Parameter \#2 \$string of method PHPUnit\\Framework\\Assert\:\:assertStringEndsWith\(\) expects string, int\|string given\.$#' - identifier: argument.type - count: 5 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Parameter \#3 \$message of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 5 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Property Tests\\Unit\\Messaging\\MessagingChannelsTest\:\:\$allChannels has no type specified\.$#' - identifier: missingType.property - count: 1 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Property Tests\\Unit\\Messaging\\MessagingChannelsTest\:\:\$authorization has no type specified\.$#' - identifier: missingType.property - count: 1 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Property Tests\\Unit\\Messaging\\MessagingChannelsTest\:\:\$connectionsAuthenticated has no type specified\.$#' - identifier: missingType.property - count: 1 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Property Tests\\Unit\\Messaging\\MessagingChannelsTest\:\:\$connectionsCount has no type specified\.$#' - identifier: missingType.property - count: 1 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Property Tests\\Unit\\Messaging\\MessagingChannelsTest\:\:\$connectionsGuest has no type specified\.$#' - identifier: missingType.property - count: 1 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Property Tests\\Unit\\Messaging\\MessagingChannelsTest\:\:\$connectionsPerChannel has no type specified\.$#' - identifier: missingType.property - count: 1 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Property Tests\\Unit\\Messaging\\MessagingChannelsTest\:\:\$connectionsTotal has no type specified\.$#' - identifier: missingType.property - count: 1 - path: tests/unit/Messaging/MessagingChannelsTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/unit/Messaging/MessagingGuestTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 6 - path: tests/unit/Messaging/MessagingTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/unit/Messaging/MessagingTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertNotContains\(\) expects iterable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/unit/Messaging/MessagingTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\) with array\ will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 1 - path: tests/unit/Network/Validators/DNSTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertIsInt\(\) with int will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 1 - path: tests/unit/Network/Validators/DNSTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertIsString\(\) with string will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 2 - path: tests/unit/Network/Validators/DNSTest.php - - - - message: '#^Cannot call method getType\(\) on Appwrite\\Network\\Validator\\Email\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/unit/Network/Validators/EmailTest.php - - - - message: '#^Cannot call method isValid\(\) on Appwrite\\Network\\Validator\\Email\|null\.$#' - identifier: method.nonObject - count: 31 - path: tests/unit/Network/Validators/EmailTest.php - - - - message: '#^Parameter \#5 \$iv of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/unit/OpenSSL/OpenSSLTest.php - - - - message: '#^Parameter \#5 \$iv of static method Appwrite\\OpenSSL\\OpenSSL\:\:encrypt\(\) expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: tests/unit/OpenSSL/OpenSSLTest.php - - - - message: '#^Parameter \#6 \$tag of static method Appwrite\\OpenSSL\\OpenSSL\:\:decrypt\(\) expects string, null given\.$#' - identifier: argument.type - count: 1 - path: tests/unit/OpenSSL/OpenSSLTest.php - - - - message: '#^Cannot access offset ''slug'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: tests/unit/Platform/Modules/Compute/Validator/SpecificationTest.php - - - - message: '#^Property Tests\\Unit\\Platform\\Modules\\Compute\\Validator\\SpecificationTest\:\:\$specifications \(array\) does not accept mixed\.$#' - identifier: assign.propertyType - count: 1 - path: tests/unit/Platform/Modules/Compute/Validator/SpecificationTest.php - - - - message: '#^Property Tests\\Unit\\Platform\\Modules\\Compute\\Validator\\SpecificationTest\:\:\$specifications type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Platform/Modules/Compute/Validator/SpecificationTest.php - - - - message: '#^Cannot access offset ''host'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/unit/Template/TemplateTest.php - - - - message: '#^Cannot access offset ''path'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/unit/Template/TemplateTest.php - - - - message: '#^Cannot access offset ''scheme'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/unit/Template/TemplateTest.php - - - - message: '#^Parameter \#1 \$url of method Appwrite\\Template\\Template\:\:unParseURL\(\) expects array, mixed given\.$#' - identifier: argument.type - count: 1 - path: tests/unit/Template/TemplateTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/unit/Transformation/TransformationTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\) with array will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 4 - path: tests/unit/URL/URLTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertIsString\(\) with string will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 7 - path: tests/unit/URL/URLTest.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Database\\Documents\\UserTest\:\:getAuthorization\(\) should return Utopia\\Database\\Validator\\Authorization but returns mixed\.$#' - identifier: return.type - count: 1 - path: tests/unit/Utopia/Database/Documents/UserTest.php - - - - message: '#^Property Tests\\Unit\\Utopia\\Database\\Documents\\UserTest\:\:\$authorization has no type specified\.$#' - identifier: missingType.property - count: 1 - path: tests/unit/Utopia/Database/Documents/UserTest.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertTrue\(\) with true will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 2 - path: tests/unit/Utopia/Database/Query/RuntimeQueryTest.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Database\\Query\\RuntimeQueryTest\:\:compileAndFilter\(\) has parameter \$payload with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Database/Query/RuntimeQueryTest.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Database\\Query\\RuntimeQueryTest\:\:compileAndFilter\(\) has parameter \$queries with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Database/Query/RuntimeQueryTest.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Database\\Query\\RuntimeQueryTest\:\:compileAndFilter\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Database/Query/RuntimeQueryTest.php - - - - message: '#^Parameter \#1 \$queries of static method Appwrite\\Utopia\\Database\\RuntimeQuery\:\:compile\(\) expects array\, array given\.$#' - identifier: argument.type - count: 1 - path: tests/unit/Utopia/Database/Query/RuntimeQueryTest.php - - - - message: '#^Cannot call method isValid\(\) on Appwrite\\Utopia\\Database\\Validator\\CompoundUID\|null\.$#' - identifier: method.nonObject - count: 13 - path: tests/unit/Utopia/Database/Validator/CompoundUIDTest.php - - - - message: '#^Cannot call method isValid\(\) on Appwrite\\Utopia\\Database\\Validator\\CustomId\|null\.$#' - identifier: method.nonObject - count: 14 - path: tests/unit/Utopia/Database/Validator/CustomIdTest.php - - - - message: '#^Cannot call method isValid\(\) on Appwrite\\Utopia\\Database\\Validator\\ProjectId\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/unit/Utopia/Database/Validator/ProjectIdTest.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Database\\Validator\\ProjectIdTest\:\:provideTest\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Database/Validator/ProjectIdTest.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\First\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/First.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\First\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/First.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\Second\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/Second.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\Second\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/Second.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V16Test\:\:createExecutionProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V16Test\:\:testCreateExecution\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V16Test\:\:testCreateExecution\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V17Test\:\:createQueryProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V17Test\:\:createUpdateRecoveryProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V17Test\:\:testQuery\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V17Test\:\:testQuery\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V17Test\:\:testUpdateRecovery\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V17Test\:\:testUpdateRecovery\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V18Test\:\:deleteMfaAuthenticatorProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V18Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V18Test\:\:testdeleteMfaAuthenticator\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V18Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V18Test\:\:testdeleteMfaAuthenticator\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V18Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V19Test\:\:functionsCreateProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V19Test\:\:functionsListExecutionsProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V19Test\:\:testFunctionsCreate\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V19Test\:\:testFunctionsCreate\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V19Test\:\:testFunctionsListExecutions\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Request\\Filters\\V19Test\:\:testFunctionsListExecutions\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Request/Filters/V19Test.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\) with array\ will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 1 - path: tests/unit/Utopia/RequestTest.php - - - - message: '#^Cannot call method addFilter\(\) on Appwrite\\Utopia\\Request\|null\.$#' - identifier: method.nonObject - count: 4 - path: tests/unit/Utopia/RequestTest.php - - - - message: '#^Cannot call method addHeader\(\) on Appwrite\\Utopia\\Request\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/unit/Utopia/RequestTest.php - - - - message: '#^Cannot call method getFilters\(\) on Appwrite\\Utopia\\Request\|null\.$#' - identifier: method.nonObject - count: 3 - path: tests/unit/Utopia/RequestTest.php - - - - message: '#^Cannot call method getParams\(\) on Appwrite\\Utopia\\Request\|null\.$#' - identifier: method.nonObject - count: 6 - path: tests/unit/Utopia/RequestTest.php - - - - message: '#^Cannot call method hasFilters\(\) on Appwrite\\Utopia\\Request\|null\.$#' - identifier: method.nonObject - count: 2 - path: tests/unit/Utopia/RequestTest.php - - - - message: '#^Cannot call method setQueryString\(\) on Appwrite\\Utopia\\Request\|null\.$#' - identifier: method.nonObject - count: 6 - path: tests/unit/Utopia/RequestTest.php - - - - message: '#^Cannot call method setRoute\(\) on Appwrite\\Utopia\\Request\|null\.$#' - identifier: method.nonObject - count: 2 - path: tests/unit/Utopia/RequestTest.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\First\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/First.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\First\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/First.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\Second\:\:parse\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/Second.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\Second\:\:parse\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/Second.php - - message: '#^Call to method parse\(\) on an unknown class Tests\\Unit\\Utopia\\Response\\Filters\\Filter\.$#' identifier: class.notFound count: 6 path: tests/unit/Utopia/Response/Filters/V16Test.php - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:deploymentProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:executionProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:functionProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:projectProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:testDeployment\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:testDeployment\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:testExecution\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:testExecution\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:testFunction\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:testFunction\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:testProject\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:testProject\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:testVariable\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:testVariable\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V16Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:variableProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V16Test.php - - message: '#^Property Tests\\Unit\\Utopia\\Response\\Filters\\V16Test\:\:\$filter \(Tests\\Unit\\Utopia\\Response\\Filters\\Filter\) does not accept Appwrite\\Utopia\\Response\\Filters\\V16\.$#' identifier: assign.propertyType @@ -82746,102 +1812,6 @@ parameters: count: 5 path: tests/unit/Utopia/Response/Filters/V17Test.php - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:membershipProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:projectProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:sessionProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:testMembership\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:testMembership\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:testProject\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:testProject\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:testSession\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:testSession\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:testToken\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:testToken\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:testUser\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:testUser\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:tokenProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:userProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:webhookProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V17Test.php - - message: '#^Property Tests\\Unit\\Utopia\\Response\\Filters\\V17Test\:\:\$filter \(Tests\\Unit\\Utopia\\Response\\Filters\\Filter\) does not accept Appwrite\\Utopia\\Response\\Filters\\V17\.$#' identifier: assign.propertyType @@ -82860,78 +1830,6 @@ parameters: count: 4 path: tests/unit/Utopia/Response/Filters/V18Test.php - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V18Test\:\:executionProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V18Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V18Test\:\:functionProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V18Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V18Test\:\:projectProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V18Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V18Test\:\:runtimeProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V18Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V18Test\:\:testExecution\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V18Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V18Test\:\:testExecution\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V18Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V18Test\:\:testFunction\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V18Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V18Test\:\:testFunction\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V18Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V18Test\:\:testProject\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V18Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V18Test\:\:testProject\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V18Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V18Test\:\:testRuntime\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V18Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V18Test\:\:testRuntime\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V18Test.php - - message: '#^Property Tests\\Unit\\Utopia\\Response\\Filters\\V18Test\:\:\$filter \(Tests\\Unit\\Utopia\\Response\\Filters\\Filter\) does not accept Appwrite\\Utopia\\Response\\Filters\\V18\.$#' identifier: assign.propertyType @@ -82950,204 +1848,6 @@ parameters: count: 11 path: tests/unit/Utopia/Response/Filters/V19Test.php - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:deploymentProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:functionListProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:functionProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:migrationProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:projectProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:providerRepositoryProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:proxyRuleProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:templateVariableProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testDeployment\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testDeployment\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testFunction\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testFunction\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testFunctionList\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testFunctionList\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testMigration\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testMigration\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testProject\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testProject\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testProviderRepository\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testProviderRepository\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testProxyRule\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testProxyRule\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testTemplateVariable\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testTemplateVariable\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testUsageFunction\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testUsageFunction\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testUsageFunctions\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testUsageFunctions\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testVariable\(\) has parameter \$content with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:testVariable\(\) has parameter \$expected with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:usageFunctionProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:usageFunctionsProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Method Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:variableProvider\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 - path: tests/unit/Utopia/Response/Filters/V19Test.php - - message: '#^Property Tests\\Unit\\Utopia\\Response\\Filters\\V19Test\:\:\$filter \(Tests\\Unit\\Utopia\\Response\\Filters\\Filter\) does not accept Appwrite\\Utopia\\Response\\Filters\\V19\.$#' identifier: assign.propertyType @@ -83159,69 +1859,3 @@ parameters: identifier: class.notFound count: 1 path: tests/unit/Utopia/Response/Filters/V19Test.php - - - - message: '#^Call to method PHPUnit\\Framework\\Assert\:\:assertIsArray\(\) with array will always evaluate to true\.$#' - identifier: method.alreadyNarrowedType - count: 1 - path: tests/unit/Utopia/ResponseTest.php - - - - message: '#^Cannot access offset ''singles'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/unit/Utopia/ResponseTest.php - - - - message: '#^Cannot access offset 0 on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: tests/unit/Utopia/ResponseTest.php - - - - message: '#^Cannot call method addFilter\(\) on Appwrite\\Utopia\\Response\|null\.$#' - identifier: method.nonObject - count: 2 - path: tests/unit/Utopia/ResponseTest.php - - - - message: '#^Cannot call method applyFilters\(\) on Appwrite\\Utopia\\Response\|null\.$#' - identifier: method.nonObject - count: 1 - path: tests/unit/Utopia/ResponseTest.php - - - - message: '#^Cannot call method getFilters\(\) on Appwrite\\Utopia\\Response\|null\.$#' - identifier: method.nonObject - count: 3 - path: tests/unit/Utopia/ResponseTest.php - - - - message: '#^Cannot call method hasFilters\(\) on Appwrite\\Utopia\\Response\|null\.$#' - identifier: method.nonObject - count: 2 - path: tests/unit/Utopia/ResponseTest.php - - - - message: '#^Cannot call method output\(\) on Appwrite\\Utopia\\Response\|null\.$#' - identifier: method.nonObject - count: 6 - path: tests/unit/Utopia/ResponseTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 12 - path: tests/unit/Utopia/ResponseTest.php - - - - message: '#^Parameter \#2 \$array of method PHPUnit\\Framework\\Assert\:\:assertArrayNotHasKey\(\) expects array\\|ArrayAccess\<\(int\|string\), mixed\>, mixed given\.$#' - identifier: argument.type - count: 3 - path: tests/unit/Utopia/ResponseTest.php - - - - message: '#^Parameter \#2 \$haystack of method PHPUnit\\Framework\\Assert\:\:assertCount\(\) expects Countable\|iterable, mixed given\.$#' - identifier: argument.type - count: 2 - path: tests/unit/Utopia/ResponseTest.php diff --git a/phpstan.neon b/phpstan.neon index bc97533e18..b87ad46eca 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -2,7 +2,7 @@ includes: - phpstan-baseline.neon parameters: - level: max + level: 3 paths: - src - app diff --git a/phpunit.xml b/phpunit.xml index 030d89af8d..9ccbaf47cc 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -34,6 +34,7 @@ ./tests/e2e/Services/Storage ./tests/e2e/Services/Tokens ./tests/e2e/Services/Webhooks + ./tests/e2e/Services/ProjectWebhooks ./tests/e2e/Services/Messaging ./tests/e2e/Services/Migrations ./tests/e2e/Services/Functions/FunctionsBase.php diff --git a/src/Appwrite/Extend/Exception.php b/src/Appwrite/Extend/Exception.php index d39611dd38..1b090357da 100644 --- a/src/Appwrite/Extend/Exception.php +++ b/src/Appwrite/Extend/Exception.php @@ -310,6 +310,7 @@ class Exception extends \Exception /** Webhooks */ public const string WEBHOOK_NOT_FOUND = 'webhook_not_found'; + public const string WEBHOOK_ALREADY_EXISTS = 'webhook_already_exists'; /** Router */ public const string ROUTER_HOST_NOT_FOUND = 'router_host_not_found'; diff --git a/src/Appwrite/Migration/Migration.php b/src/Appwrite/Migration/Migration.php index 519f05de2c..a4f73eb5f2 100644 --- a/src/Appwrite/Migration/Migration.php +++ b/src/Appwrite/Migration/Migration.php @@ -91,6 +91,7 @@ abstract class Migration '1.7.4' => 'V22', '1.8.0' => 'V23', '1.8.1' => 'V23', + '1.9.0' => 'V24', ]; /** diff --git a/src/Appwrite/Migration/Version/V24.php b/src/Appwrite/Migration/Version/V24.php new file mode 100644 index 0000000000..dc9ce9d196 --- /dev/null +++ b/src/Appwrite/Migration/Version/V24.php @@ -0,0 +1,396 @@ + null, + fn () => [] + ); + } + + Console::info('Migrating collections'); + $this->migrateCollections(); + + if ($this->project->getSequence() != 'console') { + Console::info('Migrating Databases'); + $this->migrateDatabases(); + } + + Console::info('Migrating Buckets'); + $this->migrateBuckets(); + + Console::info('Migrating documents'); + $this->forEachDocument($this->migrateDocument(...)); + + Console::info('Cleaning up old attributes'); + $this->cleanupOldAttributes(); + } + + /** + * Migrate Collections. + * + * @return void + * @throws Exception|Throwable + */ + private function migrateCollections(): void + { + $projectInternalId = $this->project->getSequence(); + + if (empty($projectInternalId)) { + throw new Exception('Project ID is null'); + } + + $collectionType = match ($projectInternalId) { + 'console' => 'console', + default => 'projects', + }; + + $collections = $this->collections[$collectionType]; + + foreach ($collections as $collection) { + $id = $collection['$id']; + + if (empty($id)) { + continue; + } + + Console::log("Migrating collection \"{$id}\""); + + $this->dbForProject->purgeCachedCollection($id); + $this->dbForProject->purgeCachedDocument(Database::METADATA, $id); + + switch ($id) { + case 'projects': + if ($collectionType === 'console') { + $attributes = [ + 'labels', + 'status', + ]; + try { + $this->createAttributesFromCollection($this->dbForProject, $id, $attributes); + } catch (Throwable $th) { + Console::warning('Failed to create attributes "' . \implode(', ', $attributes) . "\" in collection {$id}: {$th->getMessage()}"); + } + } + $this->dbForProject->purgeCachedCollection($id); + break; + + case 'keys': + if ($collectionType === 'console') { + $attributes = [ + 'resourceType', + 'resourceId', + 'resourceInternalId', + ]; + try { + $this->createAttributesFromCollection($this->dbForProject, $id, $attributes); + } catch (Throwable $th) { + Console::warning('Failed to create attributes "' . \implode(', ', $attributes) . "\" in collection {$id}: {$th->getMessage()}"); + } + + try { + $this->dbForProject->deleteIndex($id, '_key_project'); + } catch (Throwable $th) { + Console::warning("Failed to delete index \"_key_project\" from {$id}: {$th->getMessage()}"); + } + + try { + $this->createIndexFromCollection($this->dbForProject, $id, '_key_resource'); + } catch (Throwable $th) { + Console::warning("Failed to create index \"_key_resource\" from {$id}: {$th->getMessage()}"); + } + } + $this->dbForProject->purgeCachedCollection($id); + break; + + case 'rules': + if ($collectionType === 'console') { + try { + $this->createAttributeFromCollection($this->dbForProject, $id, 'logs'); + } catch (Throwable $th) { + Console::warning("Failed to create attribute \"logs\" in collection {$id}: {$th->getMessage()}"); + } + + $indexesToDelete = [ + '_key_type', + '_key_trigger', + '_key_deploymentResourceType', + '_key_owner', + '_key_region', + '_key_piid_riid_rt', + ]; + foreach ($indexesToDelete as $index) { + try { + $this->dbForProject->deleteIndex($id, $index); + } catch (Throwable $th) { + Console::warning("Failed to delete index \"$index\" from {$id}: {$th->getMessage()}"); + } + } + + $indexesToCreate = [ + '_key_type', + '_key_trigger', + '_key_deploymentResourceType', + '_key_owner', + '_key_piid_diid_drt', + '_key_region_status_createdAt', + ]; + foreach ($indexesToCreate as $index) { + try { + $this->createIndexFromCollection($this->dbForProject, $id, $index); + } catch (Throwable $th) { + Console::warning("Failed to create index \"$index\" from {$id}: {$th->getMessage()}"); + } + } + } + $this->dbForProject->purgeCachedCollection($id); + break; + + case 'teams': + try { + $this->createAttributeFromCollection($this->dbForProject, $id, 'labels'); + } catch (Throwable $th) { + Console::warning("Failed to create attribute \"labels\" in collection {$id}: {$th->getMessage()}"); + } + $this->dbForProject->purgeCachedCollection($id); + break; + + case 'databases': + if ($collectionType === 'projects') { + try { + $this->createAttributeFromCollection($this->dbForProject, $id, 'database'); + } catch (Throwable $th) { + Console::warning("Failed to create attribute \"database\" in collection {$id}: {$th->getMessage()}"); + } + $this->dbForProject->purgeCachedCollection($id); + } + break; + + case 'functions': + $attributes = [ + 'deploymentRetention', + 'startCommand', + 'buildSpecification', + 'runtimeSpecification', + ]; + try { + $this->createAttributesFromCollection($this->dbForProject, $id, $attributes); + } catch (Throwable $th) { + Console::warning('Failed to create attributes "' . \implode(', ', $attributes) . "\" in collection {$id}: {$th->getMessage()}"); + } + $this->dbForProject->purgeCachedCollection($id); + break; + + case 'sites': + $attributes = [ + 'startCommand', + 'deploymentRetention', + 'buildSpecification', + 'runtimeSpecification', + ]; + try { + $this->createAttributesFromCollection($this->dbForProject, $id, $attributes); + } catch (Throwable $th) { + Console::warning('Failed to create attributes "' . \implode(', ', $attributes) . "\" in collection {$id}: {$th->getMessage()}"); + } + $this->dbForProject->purgeCachedCollection($id); + break; + + case 'deployments': + try { + $this->createAttributeFromCollection($this->dbForProject, $id, 'startCommand'); + } catch (Throwable $th) { + Console::warning("Failed to create attribute \"startCommand\" in collection {$id}: {$th->getMessage()}"); + } + $this->dbForProject->purgeCachedCollection($id); + break; + + case 'executions': + try { + $this->dbForProject->deleteIndex($id, '_key_function_internal_id'); + } catch (Throwable $th) { + Console::warning("Failed to delete index \"_key_function_internal_id\" from {$id}: {$th->getMessage()}"); + } + try { + $this->createIndexFromCollection($this->dbForProject, $id, '_key_resourceType'); + } catch (Throwable $th) { + Console::warning("Failed to create index \"_key_resourceType\" from {$id}: {$th->getMessage()}"); + } + $this->dbForProject->purgeCachedCollection($id); + break; + + case 'buckets': + try { + $this->dbForProject->deleteIndex($id, '_fulltext_name'); + } catch (Throwable $th) { + Console::warning("Failed to delete index \"_fulltext_name\" from {$id}: {$th->getMessage()}"); + } + $this->dbForProject->purgeCachedCollection($id); + break; + + case 'providers': + try { + $this->dbForProject->deleteIndex($id, '_key_name'); + } catch (Throwable $th) { + Console::warning("Failed to delete index \"_key_name\" from {$id}: {$th->getMessage()}"); + } + $this->dbForProject->purgeCachedCollection($id); + break; + + case 'topics': + try { + $this->dbForProject->deleteIndex($id, '_key_name'); + } catch (Throwable $th) { + Console::warning("Failed to delete index \"_key_name\" from {$id}: {$th->getMessage()}"); + } + $this->dbForProject->purgeCachedCollection($id); + break; + + default: + break; + } + } + } + + /** + * Migrate all Database tables + * + * @return void + * @throws Exception + */ + private function migrateDatabases(): void + { + $this->dbForProject->foreach('databases', function (Document $database) { + Console::log("Migrating Collections of {$database->getId()} ({$database->getAttribute('name')})"); + + $databaseTable = "database_{$database->getSequence()}"; + $this->dbForProject->purgeCachedCollection($databaseTable); + + $this->dbForProject->foreach($databaseTable, function (Document $collection) use ($databaseTable) { + Console::log("Migrating Collection of {$collection->getId()} ({$collection->getAttribute('name')})"); + + $collectionTable = "{$databaseTable}_collection_{$collection->getSequence()}"; + $this->dbForProject->purgeCachedCollection($collectionTable); + }); + }); + } + + /** + * Migrate all Bucket tables + * + * @return void + * @throws \Exception + * @throws \PDOException + */ + protected function migrateBuckets(): void + { + $this->dbForProject->foreach('buckets', function (Document $bucket) { + Console::log("Migrating Bucket {$bucket->getId()} ({$bucket->getAttribute('name')})"); + + $bucketTable = "bucket_{$bucket->getSequence()}"; + $this->dbForProject->purgeCachedCollection($bucketTable); + }); + } + + /** + * Fix run on each document + * + * @param Document $document + * @return Document + * @throws Conflict + * @throws Structure + * @throws Timeout + * @throws \Utopia\Database\Exception + * @throws \Utopia\Database\Exception\Authorization + * @throws \Utopia\Database\Exception\Query + */ + private function migrateDocument(Document $document): Document + { + switch ($document->getCollection()) { + case 'keys': + $projectInternalId = $document->getAttribute('projectInternalId'); + $projectId = $document->getAttribute('projectId'); + + if (!empty($projectInternalId) && empty($document->getAttribute('resourceInternalId'))) { + $document->setAttribute('resourceType', 'projects'); + $document->setAttribute('resourceId', $projectId); + $document->setAttribute('resourceInternalId', $projectInternalId); + } + break; + default: + break; + } + return $document; + } + + /** + * Clean up old attributes after document migration is complete. + * + * @return void + */ + private function cleanupOldAttributes(): void + { + $collectionType = match ($this->project->getSequence()) { + 'console' => 'console', + default => 'projects', + }; + + if ($collectionType === 'console') { + $attributesToDelete = [ + 'keys' => ['projectInternalId', 'projectId'], + ]; + + foreach ($attributesToDelete as $collectionId => $attributes) { + foreach ($attributes as $attribute) { + try { + $this->dbForProject->deleteAttribute($collectionId, $attribute); + } catch (Throwable $th) { + Console::warning("Failed to delete attribute \"{$attribute}\" from {$collectionId}: {$th->getMessage()}"); + } + } + $this->dbForProject->purgeCachedCollection($collectionId); + } + } + } +} diff --git a/src/Appwrite/Network/Platform.php b/src/Appwrite/Network/Platform.php index ea64ff98c1..1cf5de91d1 100644 --- a/src/Appwrite/Network/Platform.php +++ b/src/Appwrite/Network/Platform.php @@ -35,6 +35,7 @@ class Platform public const SCHEME_ANDROID = 'appwrite-android'; public const SCHEME_WINDOWS = 'appwrite-windows'; public const SCHEME_LINUX = 'appwrite-linux'; + public const SCHEME_TAURI = 'tauri'; /** * @var array Map scheme types to user-friendly platform names. @@ -53,6 +54,7 @@ class Platform self::SCHEME_FIREFOX_EXTENSION => 'Web (Firefox Extension)', self::SCHEME_SAFARI_EXTENSION => 'Web (Safari Extension)', self::SCHEME_EDGE_EXTENSION => 'Web (Edge Extension)', + self::SCHEME_TAURI => 'Web (Tauri)', ]; /** diff --git a/src/Appwrite/Network/Validator/Origin.php b/src/Appwrite/Network/Validator/Origin.php index 8b9974e990..3c4e8a254a 100644 --- a/src/Appwrite/Network/Validator/Origin.php +++ b/src/Appwrite/Network/Validator/Origin.php @@ -69,6 +69,7 @@ class Origin extends Validator Platform::SCHEME_FIREFOX_EXTENSION, Platform::SCHEME_SAFARI_EXTENSION, Platform::SCHEME_EDGE_EXTENSION, + Platform::SCHEME_TAURI, ]; if (in_array($this->scheme, $webPlatforms, true)) { $validator = new Hostname($this->allowedHostnames); diff --git a/src/Appwrite/Platform/Appwrite.php b/src/Appwrite/Platform/Appwrite.php index 681e1038c3..77b9c4d1dd 100644 --- a/src/Appwrite/Platform/Appwrite.php +++ b/src/Appwrite/Platform/Appwrite.php @@ -16,6 +16,7 @@ use Appwrite\Platform\Modules\Storage; use Appwrite\Platform\Modules\Teams; use Appwrite\Platform\Modules\Tokens; use Appwrite\Platform\Modules\VCS; +use Appwrite\Platform\Modules\Webhooks; use Utopia\Platform\Platform; class Appwrite extends Platform @@ -36,5 +37,6 @@ class Appwrite extends Platform $this->addModule(new Tokens\Module()); $this->addModule(new Storage\Module()); $this->addModule(new VCS\Module()); + $this->addModule(new Webhooks\Module()); } } diff --git a/src/Appwrite/Platform/Installer/Http/Installer/Complete.php b/src/Appwrite/Platform/Installer/Http/Installer/Complete.php new file mode 100644 index 0000000000..92a00651fe --- /dev/null +++ b/src/Appwrite/Platform/Installer/Http/Installer/Complete.php @@ -0,0 +1,82 @@ +setHttpMethod(Action::HTTP_REQUEST_METHOD_POST) + ->setHttpPath('/install/complete') + ->desc('Complete installation') + ->param('installId', '', new Text(64, 0), 'Installation ID', true) + ->param('sessionId', '', new Text(256, 0), 'Session ID', true) + ->param('sessionSecret', '', new Text(256, 0), 'Session secret', true) + ->param('sessionExpire', '', new Text(64, 0), 'Session expiry timestamp', true) + ->inject('request') + ->inject('response') + ->inject('installerState') + ->callback($this->action(...)); + } + + public function action(string $installId, string $sessionId, string $sessionSecret, string $sessionExpire, Request $request, Response $response, State $state): void + { + if (!Validate::validateCsrf($request)) { + $response->setStatusCode(Response::STATUS_CODE_BAD_REQUEST); + $response->json(['success' => false, 'message' => 'Invalid CSRF token']); + return; + } + + $installId = $state->sanitizeInstallId($installId); + + if ($installId !== '') { + $state->updateGlobalLock($installId, Server::STATUS_COMPLETED); + } + + @touch(Server::INSTALLER_COMPLETE_FILE); + + if (!$sessionSecret && $installId !== '') { + $data = $state->readProgressFile($installId); + $details = $data['details'][Server::STEP_ACCOUNT_SETUP] ?? []; + if (!empty($details['sessionSecret'])) { + $sessionSecret = $details['sessionSecret']; + $sessionId = $sessionId ?: ($details['sessionId'] ?? ''); + $sessionExpire = $sessionExpire ?: ($details['sessionExpire'] ?? ''); + } + } + + if ($sessionSecret) { + $isHttps = $request->getProtocol() === 'https'; + $sameSite = $isHttps ? Response::COOKIE_SAMESITE_NONE : Response::COOKIE_SAMESITE_LAX; + $expires = 0; + if ($sessionExpire) { + $timestamp = strtotime($sessionExpire); + if ($timestamp !== false) { + $expires = $timestamp; + } + } + $response->addCookie('a_session_console', $sessionSecret, $expires, '/', '', $isHttps, true, $sameSite); + $response->addCookie('a_session_console_legacy', $sessionSecret, $expires, '/', '', $isHttps, true, $sameSite); + if ($sessionId) { + $response->addHeader('X-Appwrite-Session', $sessionId); + } + } + + @unlink(Server::INSTALLER_CONFIG_FILE); + + $response->json(['success' => true]); + } +} diff --git a/src/Appwrite/Platform/Installer/Http/Installer/Error.php b/src/Appwrite/Platform/Installer/Http/Installer/Error.php new file mode 100644 index 0000000000..506c545125 --- /dev/null +++ b/src/Appwrite/Platform/Installer/Http/Installer/Error.php @@ -0,0 +1,37 @@ +setType(Action::TYPE_ERROR) + ->inject('error') + ->inject('response') + ->callback($this->action(...)); + } + + public function action(\Throwable $error, Response $response): void + { + if ($response->isSent()) { + return; + } + $code = $error->getCode(); + if ($code < 100 || $code > 599) { + $code = 500; + } + $response->setStatusCode($code); + $message = $code >= 500 ? 'Internal installer error' : $error->getMessage(); + $response->json(['success' => false, 'message' => $message]); + } +} diff --git a/src/Appwrite/Platform/Installer/Http/Installer/Install.php b/src/Appwrite/Platform/Installer/Http/Installer/Install.php new file mode 100644 index 0000000000..0b2fa17c0d --- /dev/null +++ b/src/Appwrite/Platform/Installer/Http/Installer/Install.php @@ -0,0 +1,402 @@ +setHttpMethod(Action::HTTP_REQUEST_METHOD_POST) + ->setHttpPath('/install') + ->desc('Run installation') + ->param('appDomain', '', new AppDomain(), 'Application domain (hostname, IP, or bracket IPv6 with optional port)') + ->param('httpPort', 80, new Range(1, 65535), 'HTTP port') + ->param('httpsPort', 443, new Range(1, 65535), 'HTTPS port') + ->param('emailCertificates', '', new Email(), 'Email for SSL certificates') + ->param('opensslKey', '', new Text(64, 0), 'Secret API key', true) + ->param('assistantOpenAIKey', '', new Text(256, 0), 'OpenAI API key for assistant', true) + ->param('accountEmail', '', new Email(allowEmpty: true), 'Account email address', true) + ->param('accountPassword', '', new Password(allowEmpty: true), 'Account password', true) + ->param('database', '', new WhiteList(['mongodb', 'mariadb', 'postgresql']), 'Database adapter', true) + ->param('installId', '', new Text(64, 0), 'Installation ID', true) + ->param('retryStep', null, new Nullable(new WhiteList([Server::STEP_DOCKER_COMPOSE, Server::STEP_ENV_VARS, Server::STEP_DOCKER_CONTAINERS], true)), 'Retry from step', true) + ->inject('request') + ->inject('response') + ->inject('swooleResponse') + ->inject('installerState') + ->inject('installerConfig') + ->inject('installerPaths') + ->callback($this->action(...)); + } + + public function action( + string $appDomain, + int $httpPort, + int $httpsPort, + string $emailCertificates, + string $opensslKey, + string $assistantOpenAIKey, + string $accountEmail, + string $accountPassword, + string $database, + string $installId, + ?string $retryStep, + Request $request, + Response $response, + SwooleResponse $swooleResponse, + State $state, + Config $config, + array $paths + ): void { + $acceptHeader = $request->getHeader('accept'); + $wantsStream = stripos($acceptHeader, 'text/event-stream') !== false; + + if ($wantsStream) { + $swooleResponse->header('Content-Type', 'text/event-stream'); + $swooleResponse->header('Cache-Control', 'no-cache'); + $swooleResponse->header('Connection', 'keep-alive'); + $swooleResponse->header('X-Accel-Buffering', 'no'); + + $swooleResponse->write("event: ping\ndata: {\"time\":" . time() . "}\n\n"); + } + + if (!Validate::validateCsrf($request)) { + $this->sendBadRequest($response, $swooleResponse, $wantsStream, 'Invalid CSRF token'); + return; + } + + $appDomain = trim($appDomain); + $emailCertificates = trim($emailCertificates); + $opensslKey = trim($opensslKey); + $assistantOpenAIKey = trim($assistantOpenAIKey); + + if ($opensslKey === '' && !$config->isUpgrade()) { + $this->sendBadRequest($response, $swooleResponse, $wantsStream, 'Secret key is required'); + return; + } + + $account = []; + if (!$config->isUpgrade()) { + $accountEmail = trim($accountEmail); + if ($accountEmail === '' || !$state->isValidEmailAddress($accountEmail)) { + $this->sendBadRequest($response, $swooleResponse, $wantsStream, 'Please enter a valid email address', Server::STEP_ACCOUNT_SETUP); + return; + } + + if (!$state->isValidPassword($accountPassword)) { + $this->sendBadRequest($response, $swooleResponse, $wantsStream, 'Password must be at least 8 characters', Server::STEP_ACCOUNT_SETUP); + return; + } + + $accountName = $this->deriveNameFromEmail($accountEmail); + + $account = [ + 'name' => $accountName, + 'email' => $accountEmail, + 'password' => $accountPassword, + ]; + } + + $lockedDatabase = $config->getLockedDatabase(); + if (!$lockedDatabase) { + $database = strtolower(trim($database)); + if (!$state->isValidDatabaseAdapter($database)) { + $this->sendBadRequest($response, $swooleResponse, $wantsStream, 'Please select a supported database'); + return; + } + if (!$config->isDatabaseEnabled($database)) { + $this->sendBadRequest($response, $swooleResponse, $wantsStream, 'The selected database is not available'); + return; + } + } + + $installId = $state->sanitizeInstallId($installId); + if ($installId === '') { + $installId = bin2hex(random_bytes(8)); + } + + @unlink(Server::INSTALLER_COMPLETE_FILE); + + try { + $lockResult = $state->reserveGlobalLock($installId); + } catch (\Throwable $e) { + if ($wantsStream) { + $this->writeSseEvent($swooleResponse, Server::STATUS_ERROR, ['message' => 'Lock failed: ' . $e->getMessage()]); + $swooleResponse->end(); + } else { + $response->setStatusCode(Response::STATUS_CODE_INTERNAL_SERVER_ERROR); + $response->json(['success' => false, 'message' => 'Lock failed: ' . $e->getMessage()]); + } + return; + } + + if ($lockResult !== 'ok') { + $lockMessage = $lockResult === 'locked' + ? 'Installation already in progress' + : 'Installer lock unavailable'; + if ($wantsStream) { + $this->writeSseEvent($swooleResponse, Server::STATUS_ERROR, ['message' => $lockMessage]); + $swooleResponse->end(); + } else { + $statusCode = $lockResult === 'locked' + ? Response::STATUS_CODE_CONFLICT + : Response::STATUS_CODE_SERVICE_UNAVAILABLE; + $response->setStatusCode($statusCode); + $response->json(['success' => false, 'message' => $lockMessage]); + } + return; + } + + $existingPath = $state->progressFilePath($installId); + $existing = null; + if (file_exists($existingPath)) { + $existing = $state->readProgressFile($installId); + if (!empty($existing['steps']) && $retryStep === null) { + $state->updateGlobalLock($installId, Server::STATUS_ERROR); + if ($wantsStream) { + $this->writeSseEvent($swooleResponse, Server::STATUS_ERROR, ['message' => 'Installation already started']); + $swooleResponse->end(); + } else { + $response->setStatusCode(Response::STATUS_CODE_CONFLICT); + $response->json(['success' => false, 'message' => 'Installation already started']); + } + return; + } + } + + try { + $state->ensureBootstrapped(); + $installer = new \Appwrite\Platform\Tasks\Install(); + + if ($wantsStream) { + $this->writeSseEvent($swooleResponse, 'install-id', ['installId' => $installId]); + } + + $state->updateGlobalLock($installId, Server::STATUS_IN_PROGRESS); + + $payloadInput = [ + '_APP_ENV' => 'production', + '_APP_OPENSSL_KEY_V1' => $opensslKey, + '_APP_DOMAIN' => $appDomain ?: 'localhost', + '_APP_DOMAIN_TARGET' => $appDomain ?: 'localhost', + '_APP_EMAIL_CERTIFICATES' => $emailCertificates, + '_APP_DB_ADAPTER' => $lockedDatabase ?? ($database ?: 'mongodb'), + '_APP_ASSISTANT_OPENAI_API_KEY' => $assistantOpenAIKey, + ]; + + if ($this->hasPayload($existing)) { + $stored = $existing['payload']; + $inputValues = [ + 'httpPort' => (string) $httpPort, + 'httpsPort' => (string) $httpsPort, + 'database' => $database, + 'appDomain' => $appDomain, + 'emailCertificates' => $emailCertificates, + ]; + foreach ($inputValues as $field => $inputValue) { + if (isset($stored[$field]) && $inputValue !== '') { + $storedValue = (string) $stored[$field]; + if (in_array($field, ['httpPort', 'httpsPort'], true)) { + $storedValue = trim($storedValue); + $inputValue = trim($inputValue); + } + if ($storedValue !== $inputValue) { + if ($installId !== '') { + $state->updateGlobalLock($installId, Server::STATUS_ERROR); + } + $this->sendBadRequest($response, $swooleResponse, $wantsStream, 'Installation payload mismatch'); + return; + } + } + } + + $sensitiveFields = [ + 'opensslKey' => ['hash' => 'opensslKeyHash', 'value' => $opensslKey], + 'assistantOpenAIKey' => ['hash' => 'assistantOpenAIKeyHash', 'value' => $assistantOpenAIKey], + ]; + foreach ($sensitiveFields as $field => $info) { + $hashField = $info['hash']; + $incomingValue = $info['value']; + if (!isset($stored[$hashField]) && !isset($stored[$field])) { + continue; + } + $incomingHash = $state->hashSensitiveValue($incomingValue); + if (isset($stored[$hashField])) { + if (!hash_equals((string) $stored[$hashField], $incomingHash)) { + if ($installId !== '') { + $state->updateGlobalLock($installId, Server::STATUS_ERROR); + } + $this->sendBadRequest($response, $swooleResponse, $wantsStream, 'Installation payload mismatch'); + return; + } + } elseif (isset($stored[$field]) && $incomingValue !== '' && (string) $stored[$field] !== $incomingValue) { + if ($installId !== '') { + $state->updateGlobalLock($installId, Server::STATUS_ERROR); + } + $this->sendBadRequest($response, $swooleResponse, $wantsStream, 'Installation payload mismatch'); + return; + } + } + + $payloadInput['_APP_DOMAIN'] = $stored['appDomain'] ?? $payloadInput['_APP_DOMAIN']; + $payloadInput['_APP_DOMAIN_TARGET'] = $stored['appDomain'] ?? $payloadInput['_APP_DOMAIN_TARGET']; + $payloadInput['_APP_EMAIL_CERTIFICATES'] = $stored['emailCertificates'] ?? $payloadInput['_APP_EMAIL_CERTIFICATES']; + $payloadInput['_APP_DB_ADAPTER'] = $lockedDatabase ?? ($stored['database'] ?? $payloadInput['_APP_DB_ADAPTER']); + $httpPort = (int) ($stored['httpPort'] ?? $httpPort ?: $config->getDefaultHttpPort()); + $httpsPort = (int) ($stored['httpsPort'] ?? $httpsPort ?: $config->getDefaultHttpsPort()); + } + + $vars = $config->getVars(); + $shouldGenerateSecrets = !$installer->hasExistingConfig() && !$config->isUpgrade(); + $envVars = $installer->prepareEnvironmentVariables($payloadInput, $vars, $shouldGenerateSecrets); + + $state->writeProgressFile($installId, [ + 'payload' => [ + 'httpPort' => $httpPort ?: $config->getDefaultHttpPort(), + 'httpsPort' => $httpsPort ?: $config->getDefaultHttpsPort(), + 'database' => $lockedDatabase ?? ($database ?: 'mongodb'), + 'appDomain' => $appDomain ?: 'localhost', + 'emailCertificates' => $emailCertificates, + 'opensslKeyHash' => $state->hashSensitiveValue($opensslKey), + 'assistantOpenAIKeyHash' => $state->hashSensitiveValue($assistantOpenAIKey), + ], + 'step' => 'start', + 'status' => Server::STATUS_IN_PROGRESS, + 'message' => 'Installation started', + 'updatedAt' => time(), + ]); + + $progress = function (string $step, string $status, string $message, array $details = []) use ($installId, $wantsStream, $swooleResponse, $state) { + $payload = [ + 'installId' => $installId, + 'step' => $step, + 'status' => $status, + 'message' => $message, + 'updatedAt' => time(), + ]; + if (!empty($details)) { + $payload['details'] = $details; + } + $state->writeProgressFile($installId, $payload); + $state->updateGlobalLock($installId, Server::STATUS_IN_PROGRESS); + if ($wantsStream) { + $this->writeSseEvent($swooleResponse, 'progress', $payload); + } + }; + + $installer->performInstallation( + $httpPort ?: $config->getDefaultHttpPort(), + $httpsPort ?: $config->getDefaultHttpsPort(), + $config->getOrganization(), + $config->getImage(), + $envVars, + $config->getNoStart(), + $progress, + $retryStep, + $config->isUpgrade(), + $account + ); + + if ($wantsStream) { + $this->writeSseEvent($swooleResponse, 'done', ['installId' => $installId, 'success' => true]); + usleep(self::SSE_KEEPALIVE_DELAY_MICROSECONDS); + $swooleResponse->write(": keepalive\n\n"); + usleep(self::SSE_KEEPALIVE_DELAY_MICROSECONDS); + $swooleResponse->end(); + } else { + $response->json([ + 'success' => true, + 'installId' => $installId, + 'message' => 'Installation completed successfully', + ]); + } + $state->updateGlobalLock($installId, Server::STATUS_COMPLETED); + } catch (\Throwable $e) { + $this->handleInstallationError($e, $installId, $wantsStream, $response, $swooleResponse, $state); + } + } + + private function writeSseEvent(SwooleResponse $swooleResponse, string $event, array $payload): void + { + $swooleResponse->write("event: $event\ndata: " . json_encode($payload) . "\n\n"); + } + + private function sendBadRequest(Response $response, SwooleResponse $swooleResponse, bool $wantsStream, string $message, string $step = Server::STEP_CONFIG_FILES): void + { + if ($wantsStream) { + $this->writeSseEvent($swooleResponse, Server::STATUS_ERROR, ['message' => $message, 'step' => $step]); + $swooleResponse->end(); + } else { + $response->setStatusCode(Response::STATUS_CODE_BAD_REQUEST); + $response->json(['success' => false, 'message' => $message]); + } + } + + private function handleInstallationError(\Throwable $e, string $installId, bool $wantsStream, Response $response, SwooleResponse $swooleResponse, State $state): void + { + if ($installId !== '') { + $state->writeProgressFile($installId, [ + 'step' => Server::STATUS_ERROR, + 'status' => Server::STATUS_ERROR, + 'message' => $e->getMessage(), + 'details' => $this->buildErrorDetails($e), + 'updatedAt' => time(), + ]); + $state->updateGlobalLock($installId, Server::STATUS_ERROR); + } + + @unlink(Server::INSTALLER_CONFIG_FILE); + + if ($wantsStream) { + $this->writeSseEvent($swooleResponse, Server::STATUS_ERROR, [ + 'message' => $e->getMessage(), + 'details' => $this->buildErrorDetails($e) + ]); + $swooleResponse->end(); + } else { + $response->setStatusCode(Response::STATUS_CODE_INTERNAL_SERVER_ERROR); + $response->json(['success' => false, 'message' => $e->getMessage()]); + } + } + + private function buildErrorDetails(\Throwable $e): array + { + return []; + } + + private function hasPayload(mixed $data): bool + { + return is_array($data) && isset($data['payload']) && is_array($data['payload']); + } + + private function deriveNameFromEmail(string $email): string + { + $parts = explode('@', $email); + $username = $parts[0] ?? ''; + $cleaned = preg_replace('/[^a-zA-Z0-9]/', '', $username); + return ucfirst($cleaned); + } +} diff --git a/src/Appwrite/Platform/Installer/Http/Installer/Shutdown.php b/src/Appwrite/Platform/Installer/Http/Installer/Shutdown.php new file mode 100644 index 0000000000..7828038ffe --- /dev/null +++ b/src/Appwrite/Platform/Installer/Http/Installer/Shutdown.php @@ -0,0 +1,48 @@ +setHttpMethod(Action::HTTP_REQUEST_METHOD_POST) + ->setHttpPath('/install/shutdown') + ->desc('Shutdown installer server') + ->inject('request') + ->inject('response') + ->inject('swooleServer') + ->callback($this->action(...)); + } + + public function action(Request $request, Response $response, ?SwooleServer $swooleServer): void + { + if (!Validate::validateCsrf($request)) { + $response->setStatusCode(Response::STATUS_CODE_BAD_REQUEST); + $response->json(['success' => false, 'message' => 'Invalid CSRF token']); + return; + } + + $response->json(['success' => true]); + + if ($swooleServer) { + Timer::after(self::SHUTDOWN_DELAY_SECONDS * 1000, function () use ($swooleServer) { + $swooleServer->shutdown(); + }); + } + } +} diff --git a/src/Appwrite/Platform/Installer/Http/Installer/Status.php b/src/Appwrite/Platform/Installer/Http/Installer/Status.php new file mode 100644 index 0000000000..e53a501f4c --- /dev/null +++ b/src/Appwrite/Platform/Installer/Http/Installer/Status.php @@ -0,0 +1,65 @@ +setHttpMethod(Action::HTTP_REQUEST_METHOD_GET) + ->setHttpPath('/install/status') + ->desc('Poll installation progress') + ->param('installId', '', new Text(64, 0), 'Installation ID', true) + ->inject('response') + ->inject('installerState') + ->callback($this->action(...)); + } + + public function action(string $installId, Response $response, State $state): void + { + $installId = $state->sanitizeInstallId($installId); + if ($installId === '') { + $response->setStatusCode(Response::STATUS_CODE_BAD_REQUEST); + $response->json(['success' => false, 'message' => 'Missing installId']); + return; + } + + $path = $state->progressFilePath($installId); + if (!file_exists($path)) { + $response->setStatusCode(Response::STATUS_CODE_NOT_FOUND); + $response->json(['success' => false, 'message' => 'Install not found']); + return; + } + + $data = $state->readProgressFile($installId); + if (is_array($data) && isset($data['payload']) && is_array($data['payload'])) { + unset( + $data['payload']['opensslKey'], + $data['payload']['assistantOpenAIKey'], + $data['payload']['opensslKeyHash'], + $data['payload']['assistantOpenAIKeyHash'], + ); + } + // Strip sensitive data from step details + if (is_array($data) && isset($data['details']) && is_array($data['details'])) { + foreach ($data['details'] as $stepKey => &$stepDetails) { + if (is_array($stepDetails)) { + unset($stepDetails['sessionSecret'], $stepDetails['trace']); + } + } + unset($stepDetails); + } + $response->json(['success' => true, 'progress' => $data]); + } +} diff --git a/src/Appwrite/Platform/Installer/Http/Installer/Validate.php b/src/Appwrite/Platform/Installer/Http/Installer/Validate.php new file mode 100644 index 0000000000..9a2e0b4528 --- /dev/null +++ b/src/Appwrite/Platform/Installer/Http/Installer/Validate.php @@ -0,0 +1,45 @@ +setHttpMethod(Action::HTTP_REQUEST_METHOD_POST) + ->setHttpPath('/install/validate') + ->desc('Validate CSRF token') + ->inject('request') + ->inject('response') + ->callback($this->action(...)); + } + + public function action(Request $request, Response $response): void + { + if (!self::validateCsrf($request)) { + $response->setStatusCode(Response::STATUS_CODE_BAD_REQUEST); + $response->json(['success' => false, 'message' => 'Invalid CSRF token']); + return; + } + $response->json(['success' => true]); + } + + public static function validateCsrf(Request $request): bool + { + $cookie = $request->getCookie(Server::CSRF_COOKIE); + $header = $request->getHeader('x-appwrite-installer-csrf'); + + return $cookie !== '' && $header !== '' && hash_equals($cookie, $header); + } +} diff --git a/src/Appwrite/Platform/Installer/Http/Installer/View.php b/src/Appwrite/Platform/Installer/Http/Installer/View.php new file mode 100644 index 0000000000..ce308aa906 --- /dev/null +++ b/src/Appwrite/Platform/Installer/Http/Installer/View.php @@ -0,0 +1,91 @@ +setHttpMethod(Action::HTTP_REQUEST_METHOD_GET) + ->setHttpPath('/') + ->desc('Serve installer UI') + ->param('step', 1, new Integer(true), 'Step number (1-5)', true) + ->param('partial', null, new Nullable(new Text(1, 0)), 'Render partial step only', true) + ->inject('request') + ->inject('response') + ->inject('installerConfig') + ->inject('installerPaths') + ->callback($this->action(...)); + } + + public function action(int $step, ?string $partial, Request $request, Response $response, Config $config, array $paths): void + { + $csrfToken = $this->makeCsrf($request, $response); + + $response->addHeader('Content-Security-Policy', implode('; ', Server::INSTALLER_CSP)); + + $vars = $config->getVars(); + $defaultHttpPort = $config->getDefaultHttpPort(); + $defaultHttpsPort = $config->getDefaultHttpsPort(); + $isUpgrade = $config->isUpgrade(); + $lockedDatabase = $config->getLockedDatabase(); + $enabledDatabases = $config->getEnabledDatabases(); + $isLocalInstall = $config->isLocal(); + + $defaultEmailCertificates = $vars['_APP_EMAIL_CERTIFICATES']['default'] ?? ''; + if ($isLocalInstall && empty($defaultEmailCertificates)) { + $defaultEmailCertificates = 'walterobrien@example.com'; + } + + $step = max(1, min(5, $step)); + if ($isUpgrade && ($step === 2 || $step === 3)) { + $step = 4; + } + + $partialFile = $paths['views'] . "/installer/templates/steps/step-{$step}.phtml"; + if (!is_file($partialFile)) { + $partialFile = $paths['views'] . '/installer/templates/steps/step-1.phtml'; + } + + if ($partial !== null) { + ob_start(); + include $partialFile; + $html = ob_get_clean(); + $response->html($html); + return; + } + + ob_start(); + include $paths['views'] . '/installer.phtml'; + $html = ob_get_clean(); + + $response->html($html); + } + + private function makeCsrf(Request $request, Response $response): string + { + $existing = $request->getCookie(Server::CSRF_COOKIE); + if ($existing !== '') { + return $existing; + } + + $token = bin2hex(random_bytes(16)); + $response->addCookie(Server::CSRF_COOKIE, $token, null, '/', null, null, true, Response::COOKIE_SAMESITE_STRICT); + return $token; + } +} diff --git a/src/Appwrite/Platform/Installer/Installer.php b/src/Appwrite/Platform/Installer/Installer.php new file mode 100644 index 0000000000..c5b7c31674 --- /dev/null +++ b/src/Appwrite/Platform/Installer/Installer.php @@ -0,0 +1,13 @@ +addService('http', new Http()); + } +} diff --git a/src/Appwrite/Platform/Installer/Runtime/Config.php b/src/Appwrite/Platform/Installer/Runtime/Config.php new file mode 100644 index 0000000000..99db12dfed --- /dev/null +++ b/src/Appwrite/Platform/Installer/Runtime/Config.php @@ -0,0 +1,235 @@ +containsKnownKeys($values)) { + $this->setVars($values); + return; + } + $this->apply($values); + } + + public function apply(array $values): void + { + if ($this->hasValidStringValue($values, 'defaultHttpPort')) { + $this->setDefaultHttpPort((string) $values['defaultHttpPort']); + } + if ($this->hasValidStringValue($values, 'defaultHttpsPort')) { + $this->setDefaultHttpsPort((string) $values['defaultHttpsPort']); + } + if ($this->hasValidStringValue($values, 'organization')) { + $this->setOrganization((string) $values['organization']); + } + if ($this->hasValidStringValue($values, 'image')) { + $this->setImage((string) $values['image']); + } + if (array_key_exists('noStart', $values) && $values['noStart'] !== null) { + $this->setNoStart((bool) $values['noStart']); + } + if (array_key_exists('isUpgrade', $values) && $values['isUpgrade'] !== null) { + $this->setIsUpgrade((bool) $values['isUpgrade']); + } + if (array_key_exists('isLocal', $values) && $values['isLocal'] !== null) { + $this->setIsLocal((bool) $values['isLocal']); + } + if (array_key_exists('hostPath', $values)) { + $hostPath = $values['hostPath']; + $this->setHostPath($hostPath !== null && $hostPath !== '' ? (string) $hostPath : null); + } + if ($this->hasValidStringValue($values, 'lockedDatabase')) { + $this->setLockedDatabase((string) $values['lockedDatabase']); + } + if (array_key_exists('enabledDatabases', $values) && is_array($values['enabledDatabases'])) { + $this->setEnabledDatabases($values['enabledDatabases']); + } + if (array_key_exists('vars', $values) && is_array($values['vars'])) { + $this->setVars($values['vars']); + } + } + + private function hasValidStringValue(array $values, string $key): bool + { + return array_key_exists($key, $values) && $values[$key] !== null && $values[$key] !== ''; + } + + private function containsKnownKeys(array $values): bool + { + foreach (self::KNOWN_KEYS as $key) { + if (array_key_exists($key, $values)) { + return true; + } + } + return false; + } + + public function toArray(): array + { + return [ + 'defaultHttpPort' => $this->defaultHttpPort, + 'defaultHttpsPort' => $this->defaultHttpsPort, + 'organization' => $this->organization, + 'image' => $this->image, + 'noStart' => $this->noStart, + 'vars' => $this->vars, + 'isUpgrade' => $this->isUpgrade, + 'isLocal' => $this->isLocal, + 'hostPath' => $this->hostPath, + 'lockedDatabase' => $this->lockedDatabase, + 'enabledDatabases' => $this->enabledDatabases, + ]; + } + + public function getDefaultHttpPort(): string + { + return $this->defaultHttpPort; + } + + public function setDefaultHttpPort(string $value): void + { + $this->defaultHttpPort = $value; + } + + public function getDefaultHttpsPort(): string + { + return $this->defaultHttpsPort; + } + + public function setDefaultHttpsPort(string $value): void + { + $this->defaultHttpsPort = $value; + } + + public function getOrganization(): string + { + return $this->organization; + } + + public function setOrganization(string $value): void + { + $this->organization = $value; + } + + public function getImage(): string + { + return $this->image; + } + + public function setImage(string $value): void + { + $this->image = $value; + } + + public function getNoStart(): bool + { + return $this->noStart; + } + + public function setNoStart(bool $value): void + { + $this->noStart = $value; + } + + public function getVars(): array + { + return $this->vars; + } + + public function setVars(array $vars): void + { + $this->vars = $vars; + } + + public function isUpgrade(): bool + { + return $this->isUpgrade; + } + + public function setIsUpgrade(bool $value): void + { + $this->isUpgrade = $value; + } + + public function isLocal(): bool + { + return $this->isLocal; + } + + public function setIsLocal(bool $value): void + { + $this->isLocal = $value; + } + + public function getHostPath(): ?string + { + return $this->hostPath; + } + + public function setHostPath(?string $value): void + { + $this->hostPath = $value; + } + + public function getLockedDatabase(): ?string + { + return $this->lockedDatabase; + } + + public function setLockedDatabase(?string $value): void + { + $this->lockedDatabase = $value; + } + + /** + * @return string[] + */ + public function getEnabledDatabases(): array + { + return $this->enabledDatabases; + } + + /** + * @param string[] $value + */ + public function setEnabledDatabases(array $value): void + { + $filtered = array_values(array_filter($value, fn ($v) => is_string($v) && $v !== '')); + if (!empty($filtered)) { + $this->enabledDatabases = $filtered; + } + } + + public function isDatabaseEnabled(string $adapter): bool + { + return in_array($adapter, $this->enabledDatabases, true); + } +} diff --git a/src/Appwrite/Platform/Installer/Runtime/State.php b/src/Appwrite/Platform/Installer/Runtime/State.php new file mode 100644 index 0000000000..5552eb5632 --- /dev/null +++ b/src/Appwrite/Platform/Installer/Runtime/State.php @@ -0,0 +1,467 @@ +paths = $paths; + } + + public function buildConfig(array $overrides = [], bool $useEnv = true): Config + { + $cfg = new Config(); + $configJson = null; + $decodedOk = false; + if ($useEnv) { + $configJson = getenv('APPWRITE_INSTALLER_CONFIG'); + if ($configJson !== false && $configJson !== '') { + $decoded = json_decode($configJson, true); + if (is_array($decoded)) { + $cfg->apply($decoded); + $decodedOk = true; + } + } + } + if ($useEnv && (!$decodedOk)) { + $fileConfig = $this->readConfigFile(); + if (is_array($fileConfig)) { + $cfg->apply($fileConfig); + } + } + + if ($cfg->isLocal() && empty($cfg->getVars())) { + $envPath = dirname(__DIR__, 5) . '/.env'; + if (file_exists($envPath)) { + $envContent = file_get_contents($envPath); + if ($envContent !== false) { + $vars = $this->parseEnvFile($envContent); + if (!empty($vars)) { + $cfg->setVars($vars); + } + } + } + } + + $cfg->apply($overrides); + + return $cfg; + } + + public function applyEnvConfig(Config|array $cfg): void + { + $values = $cfg instanceof Config ? $cfg->toArray() : $cfg; + $json = json_encode($values, JSON_UNESCAPED_SLASHES); + if (!is_string($json)) { + return; + } + putenv('APPWRITE_INSTALLER_CONFIG=' . $json); + $this->writeConfigFile($json); + } + + private function readConfigFile(): ?array + { + $path = Server::INSTALLER_CONFIG_FILE; + if (!file_exists($path)) { + return null; + } + $contents = file_get_contents($path); + if ($contents === false || $contents === '') { + return null; + } + $decoded = json_decode($contents, true); + return is_array($decoded) ? $decoded : null; + } + + private function writeConfigFile(string $json): void + { + $path = Server::INSTALLER_CONFIG_FILE; + if (@file_put_contents($path, $json) === false) { + return; + } + @chmod($path, self::CONFIG_FILE_PERMISSION); + } + + + public function ensureBootstrapped(): void + { + if ($this->bootstrapped) { + return; + } + + require_once __DIR__ . '/../../../../../app/init.php'; + $this->bootstrapped = true; + } + + public function sanitizeInstallId($value): string + { + if (!is_string($value)) { + return ''; + } + + $clean = preg_replace(self::PATTERN_INSTALL_ID_SANITIZE, '', $value); + if (!is_string($clean)) { + return ''; + } + + return substr($clean, 0, 64); + } + + public function hashSensitiveValue(string $value): string + { + $trimmed = trim($value); + if ($trimmed === '') { + return ''; + } + return hash('sha256', $trimmed); + } + + public function isValidPort($value): bool + { + $string = (string) $value; + if ($string === '' || !preg_match(self::PATTERN_DIGITS_ONLY, $string)) { + return false; + } + $port = (int) $string; + return $port >= self::PORT_MIN && $port <= self::PORT_MAX; + } + + public function isValidEmailAddress(string $value): bool + { + return filter_var($value, FILTER_VALIDATE_EMAIL) !== false; + } + + public function isValidPassword(string $value): bool + { + return strlen($value) >= 8 && preg_match(self::PATTERN_HAS_NON_WHITESPACE, $value) === 1; + } + + public function isValidSecretKey(string $value): bool + { + return $value !== '' && strlen($value) <= 64; + } + + public function isValidAccountName(string $value): bool + { + return trim($value) !== ''; + } + + public function isValidAppDomainInput(string $value): bool + { + $value = trim($value); + if ($value === '') { + return false; + } + + $host = $value; + $port = null; + + if (str_starts_with($value, '[')) { + if (!preg_match(self::PATTERN_IPV6_WITH_PORT, $value, $matches)) { + return false; + } + $host = $matches[1] ?? ''; + $port = $matches[2] ?? null; + } else { + $parts = explode(':', $value); + if (count($parts) > 2) { + return false; + } + if (count($parts) === 2) { + [$host, $port] = $parts; + } + } + + if ($port !== null && $port !== '' && !$this->isValidPort($port)) { + return false; + } + + return $this->isValidAppDomain($host); + } + + public function isValidDatabaseAdapter(string $value): bool + { + return in_array($value, ['mongodb', 'mariadb', 'postgresql'], true); + } + + public function progressFilePath(string $installId): string + { + return sys_get_temp_dir() . '/appwrite-install-' . $installId . '.json'; + } + + public function clearStaleLock(): void + { + $this->withGlobalLock(function ($handle, $lock) { + if (!$handle) { + return; + } + if ($lock === null) { + return; + } + if ($this->isGlobalLockActive($lock)) { + return; + } + ftruncate($handle, 0); + rewind($handle); + }); + + $tempDir = sys_get_temp_dir(); + foreach ((array) glob($tempDir . '/appwrite-install-*.json') as $file) { + $contents = @file_get_contents($file); + if ($contents === false) { + continue; + } + $data = json_decode($contents, true); + if (!is_array($data)) { + @unlink($file); + continue; + } + $updatedAt = $data['updatedAt'] ?? 0; + $age = time() - (int) $updatedAt; + $isTerminal = isset($data['error']); + if (!$isTerminal && !empty($data['steps'])) { + $isTerminal = true; + foreach ($data['steps'] as $step) { + if (($step['status'] ?? '') !== Server::STATUS_COMPLETED) { + $isTerminal = false; + break; + } + } + } + if ($age > self::GLOBAL_LOCK_TIMEOUT_SECONDS) { + @unlink($file); + } elseif ($isTerminal && $age > 60) { + @unlink($file); + } + } + } + + public function reserveGlobalLock(string $installId): string + { + return (string) $this->withGlobalLock(function ($handle, $lock) use ($installId) { + if (!$handle) { + return 'unavailable'; + } + if ($this->isGlobalLockActive($lock) && ($lock['installId'] ?? '') !== $installId) { + return 'locked'; + } + $payload = [ + 'installId' => $installId, + 'status' => Server::STATUS_IN_PROGRESS, + 'updatedAt' => time(), + ]; + ftruncate($handle, 0); + rewind($handle); + fwrite($handle, json_encode($payload)); + return 'ok'; + }); + } + + public function updateGlobalLock(string $installId, string $status): void + { + $this->withGlobalLock(function ($handle, $lock) use ($installId, $status) { + if (!$handle) { + return; + } + if ($this->isGlobalLockActive($lock) && ($lock['installId'] ?? '') !== $installId) { + return; + } + $payload = [ + 'installId' => $installId, + 'status' => $status, + 'updatedAt' => time(), + ]; + ftruncate($handle, 0); + rewind($handle); + fwrite($handle, json_encode($payload)); + }); + } + + public function readProgressFile(string $installId): array + { + $path = $this->progressFilePath($installId); + if (!file_exists($path)) { + return [ + 'installId' => $installId, + 'steps' => [], + ]; + } + + $contents = file_get_contents($path); + if ($contents === false) { + return [ + 'installId' => $installId, + 'steps' => [], + ]; + } + + $data = json_decode($contents, true); + if (!is_array($data)) { + return [ + 'installId' => $installId, + 'steps' => [], + ]; + } + + return $data; + } + + public function writeProgressFile(string $installId, array $payload): void + { + $data = $this->readProgressFile($installId); + if (!isset($data['steps']) || !is_array($data['steps'])) { + $data['steps'] = []; + } + + if (!empty($payload['step'])) { + $data['steps'][$payload['step']] = [ + 'status' => $payload['status'] ?? Server::STATUS_IN_PROGRESS, + 'message' => $payload['message'] ?? '', + 'updatedAt' => $payload['updatedAt'] ?? time(), + ]; + } + + if (!empty($payload['status']) && $payload['status'] === Server::STATUS_ERROR) { + $data['error'] = $payload['message'] ?? 'Installation failed'; + } + + if (isset($payload['details']) && is_array($payload['details'])) { + $data['details'][$payload['step']] = $payload['details']; + } + + if (isset($payload['payload']) && is_array($payload['payload'])) { + $data['payload'] = $payload['payload']; + if (!isset($data['startedAt'])) { + $data['startedAt'] = $payload['updatedAt'] ?? time(); + } + } + + $data['updatedAt'] = $payload['updatedAt'] ?? time(); + + file_put_contents($this->progressFilePath($installId), json_encode($data), LOCK_EX); + } + + private function parseEnvFile(string $contents): array + { + $vars = []; + foreach ((array) preg_split(self::PATTERN_LINE_BREAKS, $contents) as $line) { + $line = trim($line); + if ($line === '' || $line[0] === '#') { + continue; + } + $pos = strpos($line, '='); + if ($pos === false) { + continue; + } + $key = trim(substr($line, 0, $pos)); + $value = trim(substr($line, $pos + 1)); + if ($key === '') { + continue; + } + $value = $this->stripEnvQuotes($value); + + $vars[] = [ + 'name' => $key, + 'default' => $value, + ]; + } + + return $vars; + } + + private function stripEnvQuotes(string $value): string + { + if ($value === '') { + return $value; + } + $first = $value[0]; + $last = substr($value, -1); + if (($first === '"' && $last === '"') || ($first === "'" && $last === "'")) { + $value = substr($value, 1, -1); + } + return $value; + } + + private function globalLockPath(): string + { + return Server::INSTALLER_LOCK_FILE; + } + + private function isGlobalLockActive(?array $lock): bool + { + if (!$lock || !isset($lock['updatedAt'])) { + return false; + } + + if (isset($lock['status']) && in_array($lock['status'], [Server::STATUS_COMPLETED, Server::STATUS_ERROR], true)) { + return false; + } + + if (time() - (int) $lock['updatedAt'] > self::GLOBAL_LOCK_TIMEOUT_SECONDS) { + return false; + } + + return true; + } + + private function withGlobalLock(callable $callback) + { + $path = $this->globalLockPath(); + $handle = fopen($path, 'c+'); + if ($handle === false) { + return $callback(null, null); + } + if (!flock($handle, LOCK_EX)) { + fclose($handle); + return $callback(null, null); + } + + $contents = stream_get_contents($handle); + $lock = null; + if ($contents !== false && $contents !== '') { + $decoded = json_decode($contents, true); + if (is_array($decoded)) { + $lock = $decoded; + } + } + + try { + $result = $callback($handle, $lock); + } finally { + fflush($handle); + flock($handle, LOCK_UN); + fclose($handle); + } + + return $result; + } + + private function isValidAppDomain(string $value): bool + { + if ($value === 'localhost') { + return true; + } + if (filter_var($value, FILTER_VALIDATE_IP) !== false) { + return true; + } + return filter_var($value, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME) !== false; + } +} diff --git a/src/Appwrite/Platform/Installer/Server.php b/src/Appwrite/Platform/Installer/Server.php new file mode 100644 index 0000000000..f36c270553 --- /dev/null +++ b/src/Appwrite/Platform/Installer/Server.php @@ -0,0 +1,317 @@ +initPaths(); + + $this->state = new State($this->paths); + + if (PHP_SAPI === 'cli') { + $this->runCli(); + return; + } + } + + private function initPaths(): void + { + if (!empty($this->paths)) { + return; + } + + $root = dirname(__DIR__, 4); + $this->paths = [ + 'public' => $root . '/public', + 'views' => $root . '/app/views/install', + ]; + } + + private function runCli(): void + { + $opts = getopt('', ['upgrade', 'locked-database::', 'docker', 'clean', 'port::', 'ready-file::']); + $cfg = $this->state->buildConfig([], true); + $isDocker = isset($opts['docker']); + if ($isDocker) { + $cfg->setIsLocal(true); + if ($cfg->getHostPath() === null) { + $cwd = getcwd(); + if ($cwd !== false) { + $cfg->setHostPath($cwd); + } + } + } + if (isset($opts['upgrade'])) { + $cfg->setIsUpgrade(true); + } + if (!empty($opts['locked-database'])) { + $cfg->setLockedDatabase($opts['locked-database']); + } + $this->state->applyEnvConfig($cfg); + + $host = self::INSTALLER_WEB_HOST; + $port = !empty($opts['port']) ? (string) $opts['port'] : (string) self::INSTALLER_WEB_PORT; + $readyFile = !empty($opts['ready-file']) ? (string) $opts['ready-file'] : null; + + if (isset($opts['clean'])) { + $this->removeDockerInstallerContainer(self::DEFAULT_CONTAINER); + $this->cleanupWebInstallerFiles(); + exit(0); + } + + if (isset($opts['docker'])) { + $this->printInstallerUrl($host, $port); + $this->startDockerInstaller($opts); + } + + $this->printInstallerUrl($host, $port); + $this->startSwooleServer($host, (int) $port, $readyFile); + } + + private function printInstallerUrl(string $host, string $port): void + { + $displayHost = $host === self::INSTALLER_WEB_HOST ? 'localhost' : $host; + $url = "http://$displayHost:$port"; + fwrite(STDOUT, "Open $url" . PHP_EOL); + } + + private function startSwooleServer(string $host, int $port, ?string $readyFile = null): void + { + $this->state->clearStaleLock(); + + // Preload static files into memory + $files = new Files(); + $files->load($this->paths['views']); + + // Register resources for dependency injection into actions + $config = $this->state->buildConfig(); + $paths = $this->paths; + $state = $this->state; + + Http::setResource('installerState', fn () => $state); + Http::setResource('installerConfig', fn () => $config); + Http::setResource('installerPaths', fn () => $paths); + + // Register routes via Utopia Platform + $platform = new Installer(); + $platform->init(Service::TYPE_HTTP); + + // Register error handler directly so Http::error() preserves the '*' group + $errorHandler = new Error(); + Http::error() + ->inject('error') + ->inject('response') + ->action($errorHandler->action(...)); + + $adapter = new class ($host, $port, ['worker_num' => 1]) extends SwooleAdapter { + public function getNativeServer(): SwooleServer + { + return $this->server; + } + }; + + $nativeServer = $adapter->getNativeServer(); + + Http::setResource('swooleServer', fn () => $nativeServer); + + $nativeServer->on('start', function () use ($nativeServer, $port, $readyFile) { + \Swoole\Process::signal(SIGTERM, fn () => $nativeServer->shutdown()); + \Swoole\Process::signal(SIGINT, fn () => $nativeServer->shutdown()); + + if ($readyFile !== null) { + file_put_contents($readyFile, json_encode(['port' => $port, 'pid' => getmypid()])); + } + }); + + $adapter->onRequest(function (Request $request, Response $response) use ($files) { + // Serve static files from memory + $uri = $request->getURI(); + if ($files->isFileLoaded($uri)) { + $response + ->setContentType($files->getFileMimeType($uri)) + ->send($files->getFileContents($uri)); + return; + } + + $app = new Http('UTC'); + $app->run($request, $response); + }); + + $adapter->start(); + } + + private function removeDockerInstallerContainer(string $container): void + { + $name = escapeshellarg($container); + exec("docker rm -f $name >/dev/null 2>&1"); + } + + private function cleanupWebInstallerFiles(): void + { + $cwd = getcwd(); + if ($cwd === false) { + return; + } + + $filesToRemove = [ + $cwd . '/.env.web-installer', + $cwd . '/docker-compose.web-installer.yml', + ]; + + foreach ($filesToRemove as $file) { + if (file_exists($file)) { + @unlink($file); + } + } + + $tempDir = sys_get_temp_dir(); + @unlink(self::INSTALLER_LOCK_FILE); + @unlink(self::INSTALLER_CONFIG_FILE); + foreach ((array) glob($tempDir . '/appwrite-install-*.json') as $file) { + @unlink($file); + } + } + + private function dockerImageExists(string $image): bool + { + $result = 1; + exec("docker image inspect " . escapeshellarg($image) . " >/dev/null 2>&1", $output, $result); + return $result === 0; + } + + private function buildDockerInstallerImage(string $image): void + { + fwrite(STDOUT, "Building Docker image: {$image}\n"); + $buildCommand = 'docker compose build appwrite'; + passthru($buildCommand, $status); + if ($status !== 0 || !$this->dockerImageExists($image)) { + fwrite(STDERR, "Failed to build Docker image: $image\n"); + fwrite(STDERR, "Try: docker compose build appwrite\n"); + exit(1); + } + } + + private function ensureLocalInstallerTag(string $source, string $target): void + { + $sourceArg = escapeshellarg($source); + $targetArg = escapeshellarg($target); + exec("docker tag {$sourceArg} {$targetArg}", $tagOutput, $tagStatus); + if ($tagStatus !== 0) { + fwrite(STDERR, "Failed to tag Docker image {$source} as {$target}\n"); + exit(1); + } + } + + private function startDockerInstaller(array $opts): void + { + $image = self::DEFAULT_IMAGE; + $container = self::DEFAULT_CONTAINER; + if (!$this->dockerImageExists($image)) { + $this->buildDockerInstallerImage($image); + } + $this->ensureLocalInstallerTag($image, 'appwrite/appwrite:local'); + $port = (string)self::INSTALLER_WEB_PORT; + $entrypoint = isset($opts['upgrade']) ? 'upgrade' : 'install'; + + $this->removeDockerInstallerContainer($container); + + $root = realpath(dirname(__DIR__, 4)); + $volumePath = $root !== false ? $root : (getcwd() ?: '.'); + $dockerConfig = $this->state->buildConfig([], false); + $dockerConfig->setIsLocal(true); + $dockerConfig->setHostPath($volumePath); + if (isset($opts['upgrade'])) { + $dockerConfig->setIsUpgrade(true); + } + if (!empty($opts['locked-database'])) { + $dockerConfig->setLockedDatabase($opts['locked-database']); + } + $configJson = json_encode($dockerConfig->toArray(), JSON_UNESCAPED_SLASHES); + if (!is_string($configJson)) { + $configJson = '{}'; + } + + $args = [ + 'docker', + 'run', + '-i', + '--rm', + '--name', $container, + '-p', "127.0.0.1:$port:" . self::INSTALLER_WEB_PORT, + '--volume', '/var/run/docker.sock:/var/run/docker.sock', + '--volume', "$volumePath:/usr/src/code:rw", + ]; + $args[] = '-e'; + $args[] = 'APPWRITE_INSTALLER_CONFIG=' . $configJson; + $args[] = '--entrypoint=' . $entrypoint; + $args[] = $image; + + $command = implode(' ', array_map(escapeshellarg(...), $args)); + passthru($command, $status); + exit($status); + } +} + +/** + * Run server only on direct CLI execution. + */ +function shouldRunInstallerServer(): bool +{ + return PHP_SAPI === 'cli' && realpath($_SERVER['SCRIPT_FILENAME'] ?? '') === realpath(__FILE__); +} + +if (shouldRunInstallerServer()) { + require_once __DIR__ . '/../../../../vendor/autoload.php'; + $server = new Server(); + $server->run(); +} diff --git a/src/Appwrite/Platform/Installer/Services/Http.php b/src/Appwrite/Platform/Installer/Services/Http.php new file mode 100644 index 0000000000..bd0fc62cdc --- /dev/null +++ b/src/Appwrite/Platform/Installer/Services/Http.php @@ -0,0 +1,26 @@ +type = Service::TYPE_HTTP; + + $this->addAction(View::getName(), new View()); + $this->addAction(Status::getName(), new Status()); + $this->addAction(Validate::getName(), new Validate()); + $this->addAction(Complete::getName(), new Complete()); + $this->addAction(Shutdown::getName(), new Shutdown()); + $this->addAction(Install::getName(), new Install()); + } +} diff --git a/src/Appwrite/Platform/Installer/Validator/AppDomain.php b/src/Appwrite/Platform/Installer/Validator/AppDomain.php new file mode 100644 index 0000000000..f631015654 --- /dev/null +++ b/src/Appwrite/Platform/Installer/Validator/AppDomain.php @@ -0,0 +1,82 @@ + 2) { + return false; + } + if (count($parts) === 2) { + [$host, $port] = $parts; + } + } + + if ($port !== null && $port !== '') { + $portInt = (int) $port; + if ((string) $portInt !== $port || $portInt < 1 || $portInt > 65535) { + return false; + } + } + + return $this->isValidDomain($host); + } + + private function isValidDomain(string $value): bool + { + if ($value === 'localhost') { + return true; + } + if (filter_var($value, FILTER_VALIDATE_IP) !== false) { + return true; + } + return filter_var($value, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME) !== false; + } +} diff --git a/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Get.php b/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Get.php index 8784d30667..10de481072 100644 --- a/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Get.php +++ b/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Get.php @@ -103,11 +103,9 @@ class Get extends Action // Use transaction-aware document retrieval if transactionId is provided if ($transactionId !== null) { $document = $transactionState->getDocument($collectionTableId, $documentId, $transactionId, $queries); - } elseif (! empty($selects)) { - // has selects, allow relationship on documents! + } elseif (!empty($selects)) { $document = $dbForProject->getDocument($collectionTableId, $documentId, $queries); } else { - // has no selects, disable relationship looping on documents! $document = $dbForProject->skipRelationships(fn () => $dbForProject->getDocument($collectionTableId, $documentId, $queries)); } } catch (QueryException $e) { diff --git a/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php b/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php index 3384153971..a7d77d8a93 100644 --- a/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php +++ b/src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php @@ -16,6 +16,7 @@ use Utopia\Database\Database; use Utopia\Database\Document; use Utopia\Database\Exception\Order as OrderException; use Utopia\Database\Exception\Query as QueryException; +use Utopia\Database\Exception\Timeout; use Utopia\Database\Query; use Utopia\Database\Validator\Authorization; use Utopia\Database\Validator\Query\Cursor; @@ -212,6 +213,8 @@ class XList extends Action throw new Exception(Exception::DATABASE_QUERY_ORDER_NULL, $message); } catch (QueryException $e) { throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } catch (Timeout) { + throw new Exception(Exception::DATABASE_TIMEOUT); } $operations = 0; diff --git a/src/Appwrite/Platform/Modules/Functions/Workers/Builds.php b/src/Appwrite/Platform/Modules/Functions/Workers/Builds.php index 443db88a7a..bcedeee764 100644 --- a/src/Appwrite/Platform/Modules/Functions/Workers/Builds.php +++ b/src/Appwrite/Platform/Modules/Functions/Workers/Builds.php @@ -1048,8 +1048,8 @@ class Builds extends Action 'deploymentId' => $deployment->getId(), 'deploymentInternalId' => $deployment->getSequence(), 'deploymentResourceType' => 'site', - 'deploymentResourceId' => $deployment->getId(), - 'deploymentResourceInternalId' => $deployment->getSequence(), + 'deploymentResourceId' => $resource->getId(), + 'deploymentResourceInternalId' => $resource->getSequence(), 'deploymentVcsProviderBranch' => $branchName, 'status' => 'verified', 'certificateId' => '', diff --git a/src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php b/src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php index cc2f2a53c5..9070962e7d 100644 --- a/src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php +++ b/src/Appwrite/Platform/Modules/Projects/Http/Projects/Create.php @@ -221,9 +221,13 @@ class Create extends Action $dbForProject->setDatabase(APP_DATABASE); if ($sharedTables) { + $tenant = null; + if ($sharedTablesV1) { + $tenant = $project->getSequence(); + } $dbForProject ->setSharedTables(true) - ->setTenant($sharedTablesV1 ? (int)$project->getSequence() : null) + ->setTenant($tenant) ->setNamespace($dsn->getParam('namespace')); } else { $dbForProject @@ -275,14 +279,37 @@ class Create extends Action try { $dbForProject->createCollection($key, $attributes, $indexes); } catch (Duplicate) { - $dbForProject->createDocument(Database::METADATA, new Document([ - '$id' => ID::custom($key), - '$permissions' => [Permission::create(Role::any())], - 'name' => $key, - 'attributes' => $attributes, - 'indexes' => $indexes, - 'documentSecurity' => true - ])); + try { + $dbForProject->createDocument(Database::METADATA, new Document([ + '$id' => ID::custom($key), + '$permissions' => [Permission::create(Role::any())], + 'name' => $key, + 'attributes' => $attributes, + 'indexes' => $indexes, + 'documentSecurity' => true + ])); + } catch (Duplicate) { + // Metadata already exists from concurrent creation + } + } catch (\Throwable $e) { + // PostgreSQL adapter may throw a non-Duplicate exception when + // a table or index already exists during concurrent project + // creation in shared mode. Treat as duplicate if metadata + // can be created successfully. + try { + $dbForProject->createDocument(Database::METADATA, new Document([ + '$id' => ID::custom($key), + '$permissions' => [Permission::create(Role::any())], + 'name' => $key, + 'attributes' => $attributes, + 'indexes' => $indexes, + 'documentSecurity' => true + ])); + } catch (Duplicate) { + // Metadata already exists from concurrent creation + } catch (\Throwable) { + throw $e; // Rethrow original if metadata creation also fails + } } } } diff --git a/src/Appwrite/Platform/Modules/VCS/Http/GitHub/Deployment.php b/src/Appwrite/Platform/Modules/VCS/Http/GitHub/Deployment.php index c9904bb32b..638ceab59e 100644 --- a/src/Appwrite/Platform/Modules/VCS/Http/GitHub/Deployment.php +++ b/src/Appwrite/Platform/Modules/VCS/Http/GitHub/Deployment.php @@ -431,7 +431,7 @@ trait Deployment } } - if ($resource->getCollection() === 'sites' && !empty($latestCommentId) && !empty($previewRuleId)) { + if ($resource->getCollection() === 'sites' && !empty($latestCommentId)) { $retries = 0; $lockAcquired = false; diff --git a/src/Appwrite/Platform/Modules/Webhooks/Http/Init.php b/src/Appwrite/Platform/Modules/Webhooks/Http/Init.php new file mode 100644 index 0000000000..3a14a12ffb --- /dev/null +++ b/src/Appwrite/Platform/Modules/Webhooks/Http/Init.php @@ -0,0 +1,32 @@ +setType(Action::TYPE_INIT) + ->groups(['webhooks']) + ->inject('project') + ->callback(function (Document $project) { + if ($project->getId() === 'console') { + throw new Exception(Exception::GENERAL_ACCESS_FORBIDDEN); + } + + if ($project->isEmpty()) { + throw new Exception(Exception::PROJECT_NOT_FOUND); + } + }); + } +} diff --git a/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/Create.php b/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/Create.php new file mode 100644 index 0000000000..91daf33b2b --- /dev/null +++ b/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/Create.php @@ -0,0 +1,129 @@ +setHttpMethod(Action::HTTP_REQUEST_METHOD_POST) + ->setHttpPath('/v1/webhooks') + ->httpAlias('/v1/projects/:projectId/webhooks') + ->desc('Create webhook') + ->groups(['api', 'webhooks']) + ->label('scope', 'webhooks.write') + ->label('event', 'webhooks.[webhookId].create') + ->label('audits.event', 'webhook.create') + ->label('audits.resource', 'webhook/{response.$id}') + ->label('sdk', new Method( + namespace: 'webhooks', + group: null, + name: 'create', + description: <<param('webhookId', '', fn (Database $dbForPlatform) => new CustomId(false, $dbForPlatform->getAdapter()->getMaxUIDLength()), 'Webhook ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.', false, ['dbForPlatform']) + ->param('url', '', fn () => new Multiple([new URL(['http', 'https']), new PublicDomain()], Multiple::TYPE_STRING), 'Webhook URL.') + ->param('name', null, new Text(128), 'Webhook name. Max length: 128 chars.') + ->param('events', null, new ArrayList(new Event(), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Events list. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' events are allowed.') + ->param('enabled', true, new Boolean(), 'Enable or disable a webhook.', true) + ->param('security', false, new Boolean(), 'Certificate verification, false for disabled or true for enabled.', true) + ->param('httpUser', '', new Text(256), 'Webhook HTTP user. Max length: 256 chars.', true) + ->param('httpPass', '', new Text(256), 'Webhook HTTP password. Max length: 256 chars.', true) + ->inject('response') + ->inject('project') + ->inject('queueForEvents') + ->inject('dbForPlatform') + ->inject('authorization') + ->callback($this->action(...)); + } + + /** + * @param array $events + */ + public function action( + string $webhookId, + string $url, + string $name, + array $events, + bool $enabled, + bool $security, + string $httpUser, + string $httpPass, + Response $response, + Document $project, + QueueEvent $queueForEvents, + Database $dbForPlatform, + Authorization $authorization + ) { + $webhookId = ($webhookId == 'unique()') ? ID::unique() : $webhookId; + + $webhook = new Document([ + '$id' => $webhookId, + '$permissions' => [], + 'projectInternalId' => $project->getSequence(), + 'projectId' => $project->getId(), + 'name' => $name, + 'events' => $events, + 'url' => $url, + 'security' => $security, + 'httpUser' => $httpUser, + 'httpPass' => $httpPass, + 'signatureKey' => \bin2hex(\random_bytes(64)), + 'enabled' => $enabled, + ]); + + try { + $webhook = $authorization->skip(fn () => $dbForPlatform->createDocument('webhooks', $webhook)); + } catch (DuplicateException) { + throw new Exception(Exception::WEBHOOK_ALREADY_EXISTS); + } + + $authorization->skip(fn () => $dbForPlatform->purgeCachedDocument('projects', $project->getId())); + + $queueForEvents->setParam('webhookId', $webhook->getId()); + + $response + ->setStatusCode(Response::STATUS_CODE_CREATED) + ->dynamic($webhook, Response::MODEL_WEBHOOK); + } +} diff --git a/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/Delete.php b/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/Delete.php new file mode 100644 index 0000000000..7730e9fc2c --- /dev/null +++ b/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/Delete.php @@ -0,0 +1,94 @@ +setHttpMethod(Action::HTTP_REQUEST_METHOD_DELETE) + ->setHttpPath('/v1/webhooks/:webhookId') + ->httpAlias('/v1/projects/:projectId/webhooks/:webhookId') + ->desc('Delete webhook') + ->groups(['api', 'webhooks']) + ->label('scope', 'webhooks.write') + ->label('event', 'webhooks.[webhookId].delete') + ->label('audits.event', 'webhook.delete') + ->label('audits.resource', 'webhook/{request.webhookId}') + ->label('sdk', new Method( + namespace: 'webhooks', + group: null, + name: 'delete', + description: <<param('webhookId', '', fn (Database $dbForPlatform) => new UID($dbForPlatform->getAdapter()->getMaxUIDLength()), 'Webhook ID.', false, ['dbForPlatform']) + ->inject('project') + ->inject('response') + ->inject('dbForPlatform') + ->inject('queueForEvents') + ->inject('authorization') + ->callback($this->action(...)); + } + + public function action( + string $webhookId, + Document $project, + Response $response, + Database $dbForPlatform, + Event $queueForEvents, + Authorization $authorization + ) { + $webhook = $authorization->skip(fn () => $dbForPlatform->findOne('webhooks', [ + Query::equal('$id', [$webhookId]), + Query::equal('projectInternalId', [$project->getSequence()]), + ])); + + if ($webhook->isEmpty()) { + throw new Exception(Exception::WEBHOOK_NOT_FOUND); + } + + if (!$authorization->skip(fn () => $dbForPlatform->deleteDocument('webhooks', $webhook->getId()))) { + throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Failed to remove document from DB'); + } + + $authorization->skip(fn () => $dbForPlatform->purgeCachedDocument('projects', $project->getId())); + + $queueForEvents->setParam('webhookId', $webhook->getId()); + + $response->noContent(); + } +} diff --git a/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/Get.php b/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/Get.php new file mode 100644 index 0000000000..52ac455fc9 --- /dev/null +++ b/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/Get.php @@ -0,0 +1,78 @@ +setHttpMethod(Action::HTTP_REQUEST_METHOD_GET) + ->setHttpPath('/v1/webhooks/:webhookId') + ->httpAlias('/v1/projects/:projectId/webhooks/:webhookId') + ->desc('Get webhook') + ->groups(['api', 'webhooks']) + ->label('scope', 'webhooks.read') + ->label('sdk', new Method( + namespace: 'webhooks', + group: null, + name: 'get', + description: <<param('webhookId', '', fn (Database $dbForPlatform) => new UID($dbForPlatform->getAdapter()->getMaxUIDLength()), 'Webhook ID.', false, ['dbForPlatform']) + ->inject('project') + ->inject('response') + ->inject('dbForPlatform') + ->inject('authorization') + ->callback($this->action(...)); + } + + public function action( + string $webhookId, + Document $project, + Response $response, + Database $dbForPlatform, + Authorization $authorization + ) { + $webhook = $authorization->skip(fn () => $dbForPlatform->findOne('webhooks', [ + Query::equal('$id', [$webhookId]), + Query::equal('projectInternalId', [$project->getSequence()]), + ])); + + if ($webhook->isEmpty()) { + throw new Exception(Exception::WEBHOOK_NOT_FOUND); + } + + $response->dynamic($webhook, Response::MODEL_WEBHOOK); + } +} diff --git a/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/Signature/Update.php b/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/Signature/Update.php new file mode 100644 index 0000000000..9b2612863f --- /dev/null +++ b/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/Signature/Update.php @@ -0,0 +1,93 @@ +setHttpMethod(Action::HTTP_REQUEST_METHOD_PATCH) + ->setHttpPath('/v1/webhooks/:webhookId/signature') + ->httpAlias('/v1/projects/:projectId/webhooks/:webhookId/signature') + ->desc('Update webhook signature key') + ->groups(['api', 'webhooks']) + ->label('scope', 'webhooks.write') + ->label('event', 'webhooks.[webhookId].update') + ->label('audits.event', 'webhooks.update') + ->label('audits.resource', 'webhook/{response.$id}') + ->label('sdk', new Method( + namespace: 'webhooks', + group: null, + name: 'updateSignature', + description: <<param('webhookId', '', fn (Database $dbForPlatform) => new UID($dbForPlatform->getAdapter()->getMaxUIDLength()), 'Webhook ID.', false, ['dbForPlatform']) + ->inject('response') + ->inject('project') + ->inject('queueForEvents') + ->inject('dbForPlatform') + ->inject('authorization') + ->callback($this->action(...)); + } + + public function action( + string $webhookId, + Response $response, + Document $project, + QueueEvent $queueForEvents, + Database $dbForPlatform, + Authorization $authorization + ) { + $webhook = $authorization->skip(fn () => $dbForPlatform->findOne('webhooks', [ + Query::equal('$id', [$webhookId]), + Query::equal('projectInternalId', [$project->getSequence()]), + ])); + + if ($webhook->isEmpty()) { + throw new Exception(Exception::WEBHOOK_NOT_FOUND); + } + + $updates = new Document([ + 'signatureKey' => \bin2hex(\random_bytes(64)), + ]); + + $webhook = $authorization->skip(fn () => $dbForPlatform->updateDocument('webhooks', $webhook->getId(), $updates)); + + $authorization->skip(fn () => $dbForPlatform->purgeCachedDocument('projects', $project->getId())); + + $queueForEvents->setParam('webhookId', $webhook->getId()); + + $response->dynamic($webhook, Response::MODEL_WEBHOOK); + } +} diff --git a/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/Update.php b/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/Update.php new file mode 100644 index 0000000000..a1387c356c --- /dev/null +++ b/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/Update.php @@ -0,0 +1,124 @@ +setHttpMethod(Action::HTTP_REQUEST_METHOD_PUT) + ->setHttpPath('/v1/webhooks/:webhookId') + ->httpAlias('/v1/projects/:projectId/webhooks/:webhookId') + ->desc('Update webhook') + ->groups(['api', 'webhooks']) + ->label('scope', 'webhooks.write') + ->label('event', 'webhooks.[webhookId].update') + ->label('audits.event', 'webhooks.update') + ->label('audits.resource', 'webhook/{response.$id}') + ->label('sdk', new Method( + namespace: 'webhooks', + group: null, + name: 'update', + description: <<param('webhookId', '', fn (Database $dbForPlatform) => new UID($dbForPlatform->getAdapter()->getMaxUIDLength()), 'Webhook ID.', false, ['dbForPlatform']) + ->param('name', null, new Text(128), 'Webhook name. Max length: 128 chars.') + ->param('url', '', fn () => new Multiple([new URL(['http', 'https']), new PublicDomain()], Multiple::TYPE_STRING), 'Webhook URL.') + ->param('events', null, new ArrayList(new Event(), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Events list. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' events are allowed.') + ->param('enabled', true, new Boolean(), 'Enable or disable a webhook.', true) + ->param('security', false, new Boolean(), 'Certificate verification, false for disabled or true for enabled.', true) + ->param('httpUser', '', new Text(256), 'Webhook HTTP user. Max length: 256 chars.', true) + ->param('httpPass', '', new Text(256), 'Webhook HTTP password. Max length: 256 chars.', true) + ->inject('response') + ->inject('project') + ->inject('queueForEvents') + ->inject('dbForPlatform') + ->inject('authorization') + ->callback($this->action(...)); + } + + public function action( + string $webhookId, + string $name, + string $url, + array $events, + bool $enabled, + bool $security, + string $httpUser, + string $httpPass, + Response $response, + Document $project, + QueueEvent $queueForEvents, + Database $dbForPlatform, + Authorization $authorization + ) { + $webhook = $authorization->skip(fn () => $dbForPlatform->findOne('webhooks', [ + Query::equal('$id', [$webhookId]), + Query::equal('projectInternalId', [$project->getSequence()]), + ])); + + if ($webhook->isEmpty()) { + throw new Exception(Exception::WEBHOOK_NOT_FOUND); + } + + $updates = new Document([ + 'name' => $name, + 'events' => $events, + 'url' => $url, + 'security' => $security, + 'httpUser' => $httpUser, + 'httpPass' => $httpPass, + 'enabled' => $enabled, + ]); + + if ($enabled) { + $updates->setAttribute('attempts', 0); + } + + $webhook = $authorization->skip(fn () => $dbForPlatform->updateDocument('webhooks', $webhook->getId(), $updates)); + + $authorization->skip(fn () => $dbForPlatform->purgeCachedDocument('projects', $project->getId())); + + $queueForEvents->setParam('webhookId', $webhook->getId()); + + $response->dynamic($webhook, Response::MODEL_WEBHOOK); + } +} diff --git a/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/XList.php b/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/XList.php new file mode 100644 index 0000000000..fae95d7c5d --- /dev/null +++ b/src/Appwrite/Platform/Modules/Webhooks/Http/Webhooks/XList.php @@ -0,0 +1,120 @@ +setHttpMethod(Action::HTTP_REQUEST_METHOD_GET) + ->setHttpPath('/v1/webhooks') + ->httpAlias('/v1/projects/:projectId/webhooks') + ->desc('List webhooks') + ->groups(['api', 'webhooks']) + ->label('scope', 'webhooks.read') + ->label('sdk', new Method( + namespace: 'webhooks', + group: null, + name: 'list', + description: <<param('queries', [], new Webhooks(), 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' queries are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long. You may filter on the following attributes: ' . implode(', ', Webhooks::ALLOWED_ATTRIBUTES), true) + ->param('total', true, new Boolean(true), 'When set to false, the total count returned will be 0 and will not be calculated.', true) + ->inject('project') + ->inject('response') + ->inject('dbForPlatform') + ->inject('authorization') + ->callback($this->action(...)); + } + + /** + * @param array $queries + */ + public function action( + array $queries, + bool $includeTotal, + Document $project, + Response $response, + Database $dbForPlatform, + Authorization $authorization + ) { + try { + $queries = Query::parseQueries($queries); + } catch (QueryException $e) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage()); + } + + $queries[] = Query::equal('projectInternalId', [$project->getSequence()]); + + $cursor = Query::getCursorQueries($queries, false); + $cursor = \reset($cursor); + + if ($cursor !== false) { + $validator = new Cursor(); + if (!$validator->isValid($cursor)) { + throw new Exception(Exception::GENERAL_QUERY_INVALID, $validator->getDescription()); + } + + $webhookId = $cursor->getValue(); + $cursorDocument = $authorization->skip(fn () => $dbForPlatform->findOne('webhooks', [ + Query::equal('$id', [$webhookId]), + Query::equal('projectInternalId', [$project->getSequence()]), + ])); + + if ($cursorDocument->isEmpty()) { + throw new Exception(Exception::GENERAL_CURSOR_NOT_FOUND, "Webhook '{$webhookId}' for the 'cursor' value not found."); + } + + $cursor->setValue($cursorDocument); + } + + $filterQueries = Query::groupByType($queries)['filters']; + + try { + $webhooks = $authorization->skip(fn () => $dbForPlatform->find('webhooks', $queries)); + $total = $includeTotal ? $authorization->skip(fn () => $dbForPlatform->count('webhooks', $filterQueries, APP_LIMIT_COUNT)) : 0; + } catch (OrderException $e) { + throw new Exception(Exception::DATABASE_QUERY_ORDER_NULL, "The order attribute '{$e->getAttribute()}' had a null value. Cursor pagination requires all documents order attribute values are non-null."); + } + + $response->dynamic(new Document([ + 'webhooks' => $webhooks, + 'total' => $total, + ]), Response::MODEL_WEBHOOK_LIST); + } +} diff --git a/src/Appwrite/Platform/Modules/Webhooks/Module.php b/src/Appwrite/Platform/Modules/Webhooks/Module.php new file mode 100644 index 0000000000..66400ccd9a --- /dev/null +++ b/src/Appwrite/Platform/Modules/Webhooks/Module.php @@ -0,0 +1,14 @@ +addService('http', new Http()); + } +} diff --git a/src/Appwrite/Platform/Modules/Webhooks/Services/Http.php b/src/Appwrite/Platform/Modules/Webhooks/Services/Http.php new file mode 100644 index 0000000000..4805de6ebc --- /dev/null +++ b/src/Appwrite/Platform/Modules/Webhooks/Services/Http.php @@ -0,0 +1,31 @@ +type = Service::TYPE_HTTP; + + // Hooks + $this->addAction(Init::getName(), new Init()); + + // Webhooks + $this->addAction(CreateWebhook::getName(), new CreateWebhook()); + $this->addAction(ListWebhooks::getName(), new ListWebhooks()); + $this->addAction(GetWebhook::getName(), new GetWebhook()); + $this->addAction(DeleteWebhook::getName(), new DeleteWebhook()); + $this->addAction(UpdateWebhook::getName(), new UpdateWebhook()); + $this->addAction(UpdateWebhookSignature::getName(), new UpdateWebhookSignature()); + } +} diff --git a/src/Appwrite/Platform/Tasks/Install.php b/src/Appwrite/Platform/Tasks/Install.php index ce9fca67ba..59a60062eb 100644 --- a/src/Appwrite/Platform/Tasks/Install.php +++ b/src/Appwrite/Platform/Tasks/Install.php @@ -4,17 +4,38 @@ namespace Appwrite\Platform\Tasks; use Appwrite\Docker\Compose; use Appwrite\Docker\Env; +use Appwrite\Platform\Installer\Runtime\State; +use Appwrite\Platform\Installer\Server as InstallerServer; use Appwrite\Utopia\View; use Utopia\Auth\Proofs\Password; use Utopia\Auth\Proofs\Token; use Utopia\Config\Config; use Utopia\Console; +use Utopia\Fetch\Client; use Utopia\Platform\Action; use Utopia\Validator\Boolean; use Utopia\Validator\Text; +use Utopia\Validator\WhiteList; class Install extends Action { + private const int INSTALL_STEP_DELAY_SECONDS = 2; + private const int WEB_SERVER_CHECK_ATTEMPTS = 10; + private const int WEB_SERVER_CHECK_DELAY_SECONDS = 1; + + private const int HEALTH_CHECK_ATTEMPTS = 30; + private const int HEALTH_CHECK_DELAY_SECONDS = 1; + + private const string PATTERN_ENV_VAR_NAME = '/^[A-Z0-9_]+$/'; + private const string PATTERN_DB_PASSWORD_VAR = '/^_APP_DB_.*_PASS$/'; + private const string PATTERN_SESSION_COOKIE = '/a_session_console=([^;]+)/'; + + private const string APPWRITE_API_URL = 'http://appwrite'; + private const string GROWTH_API_URL = 'https://growth.appwrite.io/v1'; + + protected string $hostPath = ''; + protected ?bool $isLocalInstall = null; + protected ?array $installerConfig = null; protected string $path = '/usr/src/code/appwrite'; public static function getName(): string @@ -32,16 +53,25 @@ class Install extends Action ->param('image', 'appwrite', new Text(0), 'Main appwrite docker image', true) ->param('interactive', 'Y', new Text(1), 'Run an interactive session', true) ->param('no-start', false, new Boolean(true), 'Run an interactive session', true) - ->param('database', 'mongodb', new Text(0), 'Database to use (mongodb|mariadb|postgres)', true) + ->param('database', 'mongodb', new WhiteList(['mongodb', 'mariadb', 'postgresql']), 'Database to use (mongodb|mariadb|postgresql)', true) ->callback($this->action(...)); } - public function action(string $httpPort, string $httpsPort, string $organization, string $image, string $interactive, bool $noStart, string $database): void - { + public function action( + string $httpPort, + string $httpsPort, + string $organization, + string $image, + string $interactive, + bool $noStart, + string $database + ): void { + $isUpgrade = false; + $defaultHttpPort = '80'; + $defaultHttpsPort = '443'; $config = Config::getParam('variables'); - $defaultHTTPPort = '80'; - $defaultHTTPSPort = '443'; - /** @var array> $vars array whre key is variable name and value is variable */ + + /** @var array> $vars array where key is variable name and value is variable */ $vars = []; foreach ($config as $category) { @@ -52,6 +82,9 @@ class Install extends Action Console::success('Starting Appwrite installation...'); + $isLocalInstall = $this->isLocalInstall(); + $this->applyLocalPaths($isLocalInstall, true); + // Create directory with write permissions if (!\file_exists(\dirname($this->path))) { if (!@\mkdir(\dirname($this->path), 0755, true)) { @@ -60,21 +93,16 @@ class Install extends Action } } - $data = @file_get_contents($this->path . '/docker-compose.yml'); - - if ($data !== false) { - if ($interactive == 'Y' && Console::isInteractive()) { - $answer = Console::confirm('Previous installation found, do you want to overwrite it (a backup will be created before overwriting)? (Y/n)'); - - if (\strtolower($answer) !== 'y') { - Console::info('No action taken.'); - return; - } - } + // Check for existing installation + $data = $this->readExistingCompose(); + $envFileExists = file_exists($this->path . '/' . $this->getEnvFileName()); + $existingInstallation = $data !== '' || $envFileExists; + if ($existingInstallation) { $time = \time(); - Console::info('Compose file found, creating backup: docker-compose.yml.' . $time . '.backup'); - file_put_contents($this->path . '/docker-compose.yml.' . $time . '.backup', $data); + $composeFileName = $this->getComposeFileName(); + Console::info('Compose file found, creating backup: ' . $composeFileName . '.' . $time . '.backup'); + file_put_contents($this->path . '/' . $composeFileName . '.' . $time . '.backup', $data); $compose = new Compose($data); $appwrite = $compose->getService('appwrite'); $oldVersion = $appwrite?->getImageVersion(); @@ -82,14 +110,14 @@ class Install extends Action $ports = $compose->getService('traefik')->getPorts(); } catch (\Throwable $th) { $ports = [ - $defaultHTTPPort => $defaultHTTPPort, - $defaultHTTPSPort => $defaultHTTPSPort + $defaultHttpPort => $defaultHttpPort, + $defaultHttpsPort => $defaultHttpsPort ]; Console::warning('Traefik not found. Falling back to default ports.'); } if ($oldVersion) { - foreach ($compose->getServices() as $service) { // Fetch all env vars from previous compose file + foreach ($compose->getServices() as $service) { if (!$service) { continue; } @@ -108,12 +136,14 @@ class Install extends Action } } - $data = @file_get_contents($this->path . '/.env'); + $envData = @file_get_contents($this->path . '/' . $this->getEnvFileName()); - if ($data !== false) { // Fetch all env vars from previous .env file - Console::info('Env file found, creating backup: .env.' . $time . '.backup'); - file_put_contents($this->path . '/.env.' . $time . '.backup', $data); - $env = new Env($data); + if ($envData !== false) { + if (!$isLocalInstall) { + Console::info('Env file found, creating backup: .env.' . $time . '.backup'); + file_put_contents($this->path . '/.env.' . $time . '.backup', $envData); + } + $env = new Env($envData); foreach ($env->list() as $key => $value) { if (is_null($value)) { @@ -128,18 +158,37 @@ class Install extends Action } foreach ($ports as $key => $value) { - if ($value === $defaultHTTPPort) { - $defaultHTTPPort = $key; + if ($value === $defaultHttpPort) { + $defaultHttpPort = $key; } - if ($value === $defaultHTTPSPort) { - $defaultHTTPSPort = $key; + if ($value === $defaultHttpsPort) { + $defaultHttpsPort = $key; } } } - // Block database type changes on existing installations - $existingDatabase = $vars['_APP_DB_ADAPTER']['default'] ?? null; + // Block database type changes on existing installations. + // Only enforce if the existing config explicitly set _APP_DB_ADAPTER + // (pre-1.9.0 installs never had this variable). + $existingDatabase = null; + foreach ($compose->getServices() as $service) { + if (!$service) { + continue; + } + $svcEnv = $service->getEnvironment()->list(); + if (isset($svcEnv['_APP_DB_ADAPTER'])) { + $existingDatabase = $svcEnv['_APP_DB_ADAPTER']; + break; + } + } + if ($existingDatabase === null) { + $envFilePath = $this->path . '/' . $this->getEnvFileName(); + $rawEnv = @file_get_contents($envFilePath); + if ($rawEnv !== false) { + $existingDatabase = (new Env($rawEnv))->list()['_APP_DB_ADAPTER'] ?? null; + } + } if ($existingDatabase !== null && $existingDatabase !== $database) { Console::error("Cannot change database type from '{$existingDatabase}' to '{$database}'."); Console::error('Changing database types on an existing installation is not supported.'); @@ -147,30 +196,36 @@ class Install extends Action } } - - if (empty($httpPort)) { - $httpPort = Console::confirm('Choose your server HTTP port: (default: ' . $defaultHTTPPort . ')'); - $httpPort = ($httpPort) ? $httpPort : $defaultHTTPPort; + $installerConfig = $this->readInstallerConfig(); + $enabledDatabases = $installerConfig['enabledDatabases'] ?? ['mongodb', 'mariadb']; + if (!in_array($database, $enabledDatabases, true)) { + Console::error("Database '{$database}' is not available. Available options: " . implode(', ', $enabledDatabases)); + Console::exit(1); } - if (empty($httpsPort)) { - $httpsPort = Console::confirm('Choose your server HTTPS port: (default: ' . $defaultHTTPSPort . ')'); - $httpsPort = ($httpsPort) ? $httpsPort : $defaultHTTPSPort; + // If interactive and web mode enabled, start web server + if ($interactive === 'Y' && Console::isInteractive()) { + Console::success('Starting web installer...'); + Console::info('Open your browser at: http://localhost:' . InstallerServer::INSTALLER_WEB_PORT); + Console::info('Press Ctrl+C to cancel installation'); + + $this->startWebServer($defaultHttpPort, $defaultHttpsPort, $organization, $image, $noStart, $vars); + return; } + // Fall back to CLI mode $enableAssistant = false; $assistantExistsInOldCompose = false; - - if ($data !== false && isset($compose)) { + if ($existingInstallation && isset($compose)) { try { $assistantService = $compose->getService('appwrite-assistant'); $assistantExistsInOldCompose = $assistantService !== null; } catch (\Throwable) { - // assistant service doesn't exist, keep default false + /* ignore */ } } - if ($interactive == 'Y' && Console::isInteractive()) { + if ($interactive === 'Y' && Console::isInteractive()) { $prompt = 'Add Appwrite Assistant? (Y/n)' . ($assistantExistsInOldCompose ? ' [Currently enabled]' : ''); $answer = Console::confirm($prompt); @@ -183,148 +238,912 @@ class Install extends Action $enableAssistant = true; } - $input = []; + if (empty($httpPort)) { + $httpPort = Console::confirm('Choose your server HTTP port: (default: ' . $defaultHttpPort . ')'); + $httpPort = ($httpPort) ?: $defaultHttpPort; + } - $password = new Password(); - $password->setCharset('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'); - $token = new Token(); + if (empty($httpsPort)) { + $httpsPort = Console::confirm('Choose your server HTTPS port: (default: ' . $defaultHttpsPort . ')'); + $httpsPort = ($httpsPort) ?: $defaultHttpsPort; + } + + $userInput = []; foreach ($vars as $var) { if ($var['name'] === '_APP_ASSISTANT_OPENAI_API_KEY') { if (!$enableAssistant) { - $input[$var['name']] = ''; + $userInput[$var['name']] = ''; continue; } - // key already exists if (!empty($var['default'])) { - $input[$var['name']] = $var['default']; + $userInput[$var['name']] = $var['default']; continue; } - // if assistant enabled and no key, ask for it if (Console::isInteractive() && $interactive === 'Y') { - $input[$var['name']] = Console::confirm('Enter your OpenAI API key for Appwrite Assistant:'); - if (empty($input[$var['name']])) { + $userInput[$var['name']] = Console::confirm('Enter your OpenAI API key for Appwrite Assistant:'); + if (empty($userInput[$var['name']])) { Console::warning('No API key provided. Assistant will be disabled.'); $enableAssistant = false; - $input[$var['name']] = ''; + $userInput[$var['name']] = ''; } - continue; + } else { + $userInput[$var['name']] = ''; } - $input[$var['name']] = ''; continue; } - if (!empty($var['filter']) && ($interactive !== 'Y' || !Console::isInteractive())) { - if ($data && $var['default'] !== null) { - $input[$var['name']] = $var['default']; - continue; - } - - if ($var['filter'] === 'token') { - $input[$var['name']] = $token->generate(); - continue; - } - - if ($var['filter'] === 'password') { - $input[$var['name']] = $password->generate(); - continue; - } - } if (!$var['required'] || !Console::isInteractive() || $interactive !== 'Y') { - $input[$var['name']] = $var['default']; continue; } if ($var['name'] === '_APP_DB_ADAPTER' && $data !== false) { - $input[$var['name']] = $database; + $userInput[$var['name']] = $database; continue; } - $input[$var['name']] = Console::confirm($var['question'] . ' (default: \'' . $var['default'] . '\')'); + $value = Console::confirm($var['question'] . ' (default: \'' . $var['default'] . '\')'); - if (empty($input[$var['name']])) { - $input[$var['name']] = $var['default']; + if (!empty($value)) { + $userInput[$var['name']] = $value; } - if ($var['filter'] === 'domainTarget') { - if ($input[$var['name']] !== 'localhost') { - Console::warning("\nIf you haven't already done so, set the following record for {$input[$var['name']]} on your DNS provider:\n"); - $mask = "%-15.15s %-10.10s %-30.30s\n"; - printf($mask, "Type", "Name", "Value"); - printf($mask, "A or AAAA", "@", ""); - Console::warning("\nUse 'AAAA' if you're using an IPv6 address and 'A' if you're using an IPv4 address.\n"); - } + if ($var['filter'] === 'domainTarget' && !empty($value) && $value !== 'localhost') { + Console::warning("\nIf you haven't already done so, set the following record for {$value} on your DNS provider:\n"); + $mask = "%-15.15s %-10.10s %-30.30s\n"; + printf($mask, "Type", "Name", "Value"); + printf($mask, "A or AAAA", "@", ""); + Console::warning("\nUse 'AAAA' if you're using an IPv6 address and 'A' if you're using an IPv4 address.\n"); } } - $database = $input['_APP_DB_ADAPTER']; + $userInput['_APP_DB_ADAPTER'] = $userInput['_APP_DB_ADAPTER'] ?? $database; + $database = $userInput['_APP_DB_ADAPTER']; if ($database === 'postgresql') { - $input['_APP_DB_HOST'] = 'postgresql'; - $input['_APP_DB_PORT'] = 5432; + $userInput['_APP_DB_HOST'] = 'postgresql'; + $userInput['_APP_DB_PORT'] = 5432; + } elseif ($database === 'mongodb') { + $userInput['_APP_DB_HOST'] = 'mongodb'; + $userInput['_APP_DB_PORT'] = 27017; } elseif ($database === 'mariadb') { - $input['_APP_DB_HOST'] = 'mariadb'; - $input['_APP_DB_PORT'] = 3306; + $userInput['_APP_DB_HOST'] = 'mariadb'; + $userInput['_APP_DB_PORT'] = 3306; } - $database = $input['_APP_DB_ADAPTER']; + $shouldGenerateSecrets = !$existingInstallation && !$isUpgrade; + $input = $this->prepareEnvironmentVariables($userInput, $vars, $shouldGenerateSecrets); + $this->performInstallation($httpPort, $httpsPort, $organization, $image, $input, $noStart, null, null, $isUpgrade); + } + + + protected function startWebServer(string $defaultHttpPort, string $defaultHttpsPort, string $organization, string $image, bool $noStart, array $vars, bool $isUpgrade = false, ?string $lockedDatabase = null): void + { + $port = InstallerServer::INSTALLER_WEB_PORT; + + @unlink(InstallerServer::INSTALLER_COMPLETE_FILE); + + $state = new State([]); + $state->clearStaleLock(); + + $installerConfig = $this->readInstallerConfig(); + $enabledDatabases = $installerConfig['enabledDatabases'] ?? ['mongodb', 'mariadb']; + + $this->setInstallerConfig([ + 'defaultHttpPort' => $defaultHttpPort, + 'defaultHttpsPort' => $defaultHttpsPort, + 'organization' => $organization, + 'image' => $image, + 'noStart' => $noStart, + 'vars' => $vars, + 'isUpgrade' => $isUpgrade, + 'lockedDatabase' => $lockedDatabase, + 'enabledDatabases' => $enabledDatabases, + 'isLocal' => $this->isLocalInstall(), + 'hostPath' => $this->hostPath ?: null, + ]); + + // Start Swoole-based installer server in background + // Redirect stdout/stderr to a log file so exec() returns immediately + // (otherwise the backgrounded process holds the pipe open and exec() hangs) + $serverScript = \escapeshellarg(dirname(__DIR__) . '/Installer/Server.php'); + $logFile = \sys_get_temp_dir() . '/appwrite-installer-server.log'; + $output = []; + \exec("php {$serverScript} > " . \escapeshellarg($logFile) . " 2>&1 & echo \$!", $output); + $pid = isset($output[0]) ? (int) $output[0] : 0; + + \register_shutdown_function(function () use ($pid) { + if ($pid > 0 && \function_exists('posix_kill')) { + @\posix_kill($pid, SIGTERM); + } + }); + \sleep(1); + + if (!$this->waitForWebServer($port)) { + $log = @\file_get_contents($logFile); + if ($log !== false && $log !== '') { + Console::error('Installer server log:'); + Console::error($log); + } + Console::warning('Web installer did not respond in time. Please refresh the browser.'); + return; + } + + if ($this->isInstallationComplete($port)) { + Console::success('Installation completed.'); + } + } + + public function prepareEnvironmentVariables(array $userInput, array $vars, bool $shouldGenerateSecrets = true): array + { + $input = []; + $password = new Password(); + $token = new Token(); + + // Start with all defaults + foreach ($vars as $var) { + $filter = $var['filter'] ?? null; + $default = $var['default'] ?? null; + $hasDefault = $default !== null && $default !== ''; + + if ($filter === 'token') { + if ($hasDefault) { + $input[$var['name']] = $default; + } elseif ($shouldGenerateSecrets) { + $input[$var['name']] = $token->generate(); + } else { + $input[$var['name']] = ''; + } + } elseif ($filter === 'password') { + if ($hasDefault) { + $input[$var['name']] = $default; + } elseif ($shouldGenerateSecrets) { + /*;#+@:/?& broke DSNs locally */ + $input[$var['name']] = $this->generatePasswordValue($var['name'], $password); + } else { + $input[$var['name']] = ''; + } + } else { + $input[$var['name']] = $default; + } + } + + // Override with user inputs + foreach ($userInput as $key => $value) { + if ($value !== null && ($value !== '' || $key === '_APP_ASSISTANT_OPENAI_API_KEY')) { + $input[$key] = $value; + } + } + + foreach ($input as $key => $value) { + if (!is_string($value)) { + continue; + } + if (str_contains($value, "\n") || str_contains($value, "\r")) { + throw new \InvalidArgumentException('Invalid value for ' . $key); + } + } + + // Set database-specific connection details + $database = $input['_APP_DB_ADAPTER'] ?? 'mongodb'; if ($database === 'mongodb') { $input['_APP_DB_HOST'] = 'mongodb'; $input['_APP_DB_PORT'] = 27017; } elseif ($database === 'mariadb') { $input['_APP_DB_HOST'] = 'mariadb'; $input['_APP_DB_PORT'] = 3306; + } elseif ($database === 'postgresql') { + $input['_APP_DB_HOST'] = 'postgresql'; + $input['_APP_DB_PORT'] = 5432; } - $templateForCompose = new View(__DIR__ . '/../../../../app/views/install/compose.phtml'); - $templateForEnv = new View(__DIR__ . '/../../../../app/views/install/env.phtml'); - $templateForCompose - ->setParam('httpPort', $httpPort) - ->setParam('httpsPort', $httpsPort) - ->setParam('version', APP_VERSION_STABLE) - ->setParam('organization', $organization) - ->setParam('image', $image) - ->setParam('enableAssistant', $enableAssistant) - ->setParam('database', $database); + return $input; + } - $templateForEnv->setParam('vars', $input); + public function hasExistingConfig(): bool + { + $isLocalInstall = $this->isLocalInstall(); + $this->applyLocalPaths($isLocalInstall, true); - if (!file_put_contents($this->path . '/docker-compose.yml', $templateForCompose->render(false))) { - $message = 'Failed to save Docker Compose file'; - Console::error($message); - Console::exit(1); + if ($this->readExistingCompose() !== '') { + return true; } - if (!file_put_contents($this->path . '/.env', $templateForEnv->render(false))) { - $message = 'Failed to save environment variables file'; - Console::error($message); - Console::exit(1); + return file_exists($this->path . '/' . $this->getEnvFileName()); + } + + private function updateProgress(?callable $progress, string $step, string $status, array $messages = [], array $details = [], ?string $messageOverride = null): void + { + if (!$progress) { + return; } - $env = ''; - $stdout = ''; - $stderr = ''; - - foreach ($input as $key => $value) { - if ($value) { - $env .= $key . '=' . \escapeshellarg($value) . ' '; + if ($messageOverride !== null) { + $message = $messageOverride; + } else { + $key = $status === InstallerServer::STATUS_COMPLETED ? 'done' : 'start'; + $message = $messages[$step][$key] ?? null; + if ($message === null) { + return; } } - $exit = 0; - if (!$noStart) { - Console::log("Running \"docker compose up -d --remove-orphans --renew-anon-volumes\""); - $exit = Console::execute("$env docker compose --project-directory $this->path up -d --remove-orphans --renew-anon-volumes", '', $stdout, $stderr); + try { + $progress($step, $status, $message, $details); + } catch (\Throwable $e) { } - - if ($exit !== 0) { - $message = 'Failed to install Appwrite dockers'; - Console::error($message); - Console::error($stderr); - Console::exit($exit); - } else { - $message = 'Appwrite installed successfully'; - Console::success($message); + if ($status === InstallerServer::STATUS_IN_PROGRESS) { + sleep(self::INSTALL_STEP_DELAY_SECONDS); } } + + private function setInstallerConfig(array $config): void + { + $json = json_encode($config, JSON_UNESCAPED_SLASHES); + if (!is_string($json)) { + return; + } + + putenv('APPWRITE_INSTALLER_CONFIG=' . $json); + $path = InstallerServer::INSTALLER_CONFIG_FILE; + if (@file_put_contents($path, $json) === false) { + return; + } + @chmod($path, 0600); + } + + public function performInstallation( + string $httpPort, + string $httpsPort, + string $organization, + string $image, + array $input, + bool $noStart, + ?callable $progress = null, + ?string $resumeFromStep = null, + bool $isUpgrade = false, + array $account = [] + ): void { + $isLocalInstall = $this->isLocalInstall(); + $this->applyLocalPaths($isLocalInstall, false); + + $isCLI = php_sapi_name() === 'cli'; + if ($isLocalInstall) { + $useExistingConfig = false; + } else { + $useExistingConfig = file_exists($this->path . '/' . $this->getComposeFileName()) + && file_exists($this->path . '/' . $this->getEnvFileName()); + } + + if ($isLocalInstall) { + $image = 'appwrite'; + $organization = 'appwrite'; + } + + $templateForEnv = new View($this->buildFromProjectPath('/app/views/install/env.phtml')); + $templateForCompose = new View($this->buildFromProjectPath('/app/views/install/compose.phtml')); + + $database = $input['_APP_DB_ADAPTER'] ?? 'mongodb'; + + $version = \getenv('_APP_VERSION') ?: (\defined('APP_VERSION_STABLE') ? APP_VERSION_STABLE : 'latest'); + if ($isLocalInstall) { + $version = 'local'; + } + + $assistantKey = (string) ($input['_APP_ASSISTANT_OPENAI_API_KEY'] ?? ''); + $enableAssistant = trim($assistantKey) !== ''; + + $templateForCompose + ->setParam('httpPort', $httpPort) + ->setParam('httpsPort', $httpsPort) + ->setParam('version', $version) + ->setParam('organization', $organization) + ->setParam('image', $image) + ->setParam('database', $database) + ->setParam('hostPath', $this->hostPath) + ->setParam('enableAssistant', $enableAssistant); + + $templateForEnv->setParam('vars', $input); + + $steps = [ + InstallerServer::STEP_DOCKER_COMPOSE, + InstallerServer::STEP_ENV_VARS, + InstallerServer::STEP_DOCKER_CONTAINERS + ]; + + $startIndex = 0; + if ($resumeFromStep !== null) { + $resumeIndex = array_search($resumeFromStep, $steps, true); + if ($resumeIndex !== false) { + $startIndex = $resumeIndex; + } + } + + $currentStep = null; + + $messages = $this->buildStepMessages($isUpgrade); + + try { + if ($startIndex <= 1) { + $this->updateProgress($progress, InstallerServer::STEP_CONFIG_FILES, InstallerServer::STATUS_IN_PROGRESS, $messages); + } + + if ($startIndex <= 0) { + $currentStep = InstallerServer::STEP_DOCKER_COMPOSE; + $this->updateProgress($progress, InstallerServer::STEP_DOCKER_COMPOSE, InstallerServer::STATUS_IN_PROGRESS, $messages); + + if (!$useExistingConfig) { + $this->writeComposeFile($templateForCompose); + } + + $this->updateProgress($progress, InstallerServer::STEP_DOCKER_COMPOSE, InstallerServer::STATUS_COMPLETED, $messages); + } + + if ($startIndex <= 1) { + $currentStep = InstallerServer::STEP_ENV_VARS; + $this->updateProgress($progress, InstallerServer::STEP_ENV_VARS, InstallerServer::STATUS_IN_PROGRESS, $messages); + + if (!$useExistingConfig) { + $this->writeEnvFile($templateForEnv); + } + + $this->updateProgress($progress, InstallerServer::STEP_ENV_VARS, InstallerServer::STATUS_COMPLETED, $messages); + $this->updateProgress($progress, InstallerServer::STEP_CONFIG_FILES, InstallerServer::STATUS_COMPLETED, $messages); + } + + if ($database === 'mongodb' && !$useExistingConfig) { + $this->copyMongoEntrypointIfNeeded(); + } + + if (!$noStart && $startIndex <= 2) { + $currentStep = InstallerServer::STEP_DOCKER_CONTAINERS; + $this->updateProgress($progress, InstallerServer::STEP_DOCKER_CONTAINERS, InstallerServer::STATUS_IN_PROGRESS, $messages); + $this->runDockerCompose($input, $isLocalInstall, $useExistingConfig, $isCLI); + + if (!$isLocalInstall) { + $this->connectInstallerToAppwriteNetwork(); + } + + $domain = $input['_APP_DOMAIN'] ?? 'localhost'; + + // Wait for Appwrite API to be healthy before marking containers as ready + $apiUrl = $this->waitForApiReady($domain, $httpPort, $isLocalInstall, $progress, InstallerServer::STEP_DOCKER_CONTAINERS); + + $this->updateProgress($progress, InstallerServer::STEP_DOCKER_CONTAINERS, InstallerServer::STATUS_COMPLETED, $messages); + + if (!$isUpgrade) { + $this->createInitialAdminAccount($account, $progress, $apiUrl, $domain); + } + + // Track installs + $this->trackSelfHostedInstall($input, $isUpgrade, $version, $account); + + if ($isCLI) { + Console::success('Appwrite installed successfully'); + } + } else { + if ($isCLI) { + Console::success('Installation files created. Run "docker compose up -d" to start Appwrite'); + } + } + } catch (\Throwable $e) { + if ($currentStep) { + $details = []; + $previous = $e->getPrevious(); + if ($previous instanceof \Throwable && $previous->getMessage() !== '') { + $details['output'] = $previous->getMessage(); + } + $this->updateProgress($progress, $currentStep, InstallerServer::STATUS_ERROR, $messages, $details, $e->getMessage()); + } + throw $e; + } + } + + private function createInitialAdminAccount(array $account, ?callable $progress, string $apiUrl, string $domain): void + { + $name = $account['name'] ?? 'Admin'; + $email = $account['email'] ?? null; + $password = $account['password'] ?? null; + + if (!$email || !$password) { + return; + } + + try { + $this->updateProgress( + $progress, + InstallerServer::STEP_ACCOUNT_SETUP, + InstallerServer::STATUS_IN_PROGRESS, + messageOverride: 'Creating Appwrite account' + ); + + // Create the account — tolerate "already exists" so we can still + // create a session (common when re-running the installer). + $userId = null; + try { + $userId = $this->makeApiCall('/v1/account', [ + 'userId' => 'unique()', + 'email' => $email, + 'password' => $password, + 'name' => $name + ], false, $apiUrl, $domain); + } catch (\Throwable $e) { + if (\stripos($e->getMessage(), 'already exists') === false) { + throw $e; + } + } + + $session = $this->makeApiCall('/v1/account/sessions/email', [ + 'email' => $email, + 'password' => $password + ], true, $apiUrl, $domain); + + $this->updateProgress( + $progress, + InstallerServer::STEP_ACCOUNT_SETUP, + InstallerServer::STATUS_COMPLETED, + details: [ + 'userId' => $userId ?? $session['id'], + 'sessionId' => $session['id'], + 'sessionSecret' => $session['secret'], + 'sessionExpire' => $session['expire'] ?? null + ], + messageOverride: 'Account created successfully' + ); + } catch (\Throwable $e) { + $this->updateProgress( + $progress, + InstallerServer::STEP_ACCOUNT_SETUP, + InstallerServer::STATUS_ERROR, + details: [ + 'output' => "apiUrl={$apiUrl}, domain={$domain}", + 'trace' => $e->getTraceAsString(), + ], + messageOverride: 'Account creation failed: ' . $e->getMessage() + ); + } + } + + private function trackSelfHostedInstall(array $input, bool $isUpgrade, string $version, array $account): void + { + if ($this->isLocalInstall()) { + return; + } + + $appEnv = $input['_APP_ENV'] ?? 'development'; + $domain = $input['_APP_DOMAIN'] ?? 'localhost'; + + /* local or test instance */ + if ($appEnv !== 'production') { + return; + } + + /* prod but local or test instance */ + if ($domain === 'localhost' + || str_starts_with($domain, '127.') + || str_starts_with($domain, '0.0.0.0') + ) { + return; + } + + $type = $isUpgrade ? 'upgrade' : 'install'; + $database = $input['_APP_DB_ADAPTER'] ?? 'mongodb'; + $name = $account['name'] ?? 'Admin'; + $email = $account['email'] ?? 'admin@selfhosted.local'; + + $payload = [ + 'action' => $type, + 'account' => 'self-hosted', + 'url' => 'https://' . $domain, + 'category' => 'self_hosted', + 'label' => 'self_hosted_' . $type, + 'version' => $version, + 'data' => json_encode([ + 'name' => $name, + 'email' => $email, + 'domain' => $domain, + 'database' => $database, + ]), + ]; + + try { + $client = new Client(); + $client + ->addHeader('Content-Type', 'application/json') + ->fetch(self::GROWTH_API_URL . '/analytics', Client::METHOD_POST, $payload); + } catch (\Throwable) { + // tracking shouldn't block installation + } + } + + /** + * Wait for the Appwrite API to respond. Builds candidate URLs based on + * the runtime context and returns whichever responds first. + * + * Candidates (in order of preference): + * - Docker internal DNS (http://appwrite) — only if on the appwrite network + * - host.docker.internal:{port} — reaches host-published ports from inside a container + * - localhost:{port} — works when running directly on the host (local dev) + */ + private function waitForApiReady(string $domain, string $httpPort, bool $isLocalInstall, ?callable $progress, string $step = InstallerServer::STEP_DOCKER_CONTAINERS): string + { + $client = new Client(); + $client + ->setTimeout(2000) + ->setConnectTimeout(2000) + ->addHeader('Host', $domain); + + $healthPath = '/v1/health/version'; + + // Local dev: reach Traefik via localhost on the host. + // Docker: reach Appwrite directly via Docker internal DNS (network connect is guaranteed). + $candidate = $isLocalInstall + ? 'http://localhost:' . $httpPort . $healthPath + : self::APPWRITE_API_URL . $healthPath; + $candidates = [$candidate]; + + $lastErrors = []; + + for ($i = 0; $i < self::HEALTH_CHECK_ATTEMPTS; $i++) { + foreach ($candidates as $url) { + try { + $response = $client->fetch($url); + if ($response->getStatusCode() === 200) { + return \rtrim(\substr($url, 0, -\strlen($healthPath)), '/'); + } + $lastErrors[$url] = "HTTP {$response->getStatusCode()}"; + } catch (\Throwable $e) { + $lastErrors[$url] = $e->getMessage(); + } + } + + if ($progress) { + try { + $progress( + $step, + InstallerServer::STATUS_IN_PROGRESS, + 'Waiting for Appwrite to be ready (' . ($i + 1) . '/' . self::HEALTH_CHECK_ATTEMPTS . ')', + [] + ); + } catch (\Throwable) { + } + } + + if ($i < self::HEALTH_CHECK_ATTEMPTS - 1) { + sleep(self::HEALTH_CHECK_DELAY_SECONDS); + } + } + + $errorDetail = implode('; ', array_map( + fn ($url, $err) => "{$url} => {$err}", + array_keys($lastErrors), + array_values($lastErrors) + )); + + throw new \Exception("Failed to connect with Appwrite in time. Tried: {$errorDetail}"); + } + + /** + * Connect the installer container to the appwrite network, retrying + * until it succeeds or we run out of attempts. + */ + private function connectInstallerToAppwriteNetwork(): void + { + $network = escapeshellarg('appwrite'); + + // Resolve our own container ID — works regardless of how the + // container was started (--name, random name, etc.). + $containerId = trim((string) @file_get_contents('/etc/hostname')); + if ($containerId === '') { + $containerId = InstallerServer::DEFAULT_CONTAINER; + } + $container = escapeshellarg($containerId); + + $outputStr = ''; + for ($i = 0; $i < 10; $i++) { + $output = []; + @exec("docker network connect {$network} {$container} 2>&1", $output, $exitCode); + + if ($exitCode === 0) { + return; + } + + $outputStr = implode(' ', $output); + if (str_contains($outputStr, 'already exists')) { + return; + } + + sleep(1); + } + + throw new \Exception('Failed to connect installer to appwrite network: ' . $outputStr); + } + + private function makeApiCall(string $endpoint, array $body, bool $extractSession = false, string $apiUrl = self::APPWRITE_API_URL, string $domain = 'localhost') + { + $client = new Client(); + $client + ->setTimeout(30000) + ->setConnectTimeout(10000) + ->addHeader('Content-Type', 'application/json') + ->addHeader('X-Appwrite-Project', 'console') + ->addHeader('Host', $domain); + + $url = $apiUrl . $endpoint; + $response = $client->fetch($url, Client::METHOD_POST, $body); + + if ($response->getStatusCode() !== 201) { + $error = $response->json(); + $message = $error['message'] ?? ('HTTP ' . $response->getStatusCode() . ': ' . $response->getBody()); + throw new \Exception("API call failed ({$endpoint}): {$message}"); + } + + $data = $response->json(); + if (!isset($data['$id'])) { + throw new \Exception('API response missing ID field'); + } + + if ($extractSession) { + $headers = $response->getHeaders(); + $setCookie = $headers['set-cookie'] ?? $headers['Set-Cookie'] ?? null; + + if (!$setCookie || !preg_match(self::PATTERN_SESSION_COOKIE, $setCookie, $matches)) { + throw new \Exception('Session created but no cookie found'); + } + + return [ + 'id' => $data['$id'], + 'secret' => urldecode($matches[1]), + 'expire' => $data['expire'] ?? null + ]; + } + + return $data['$id']; + } + + private function buildStepMessages(bool $isUpgrade): array + { + $isUpgradeLabel = $isUpgrade ? 'updated' : 'created'; + $verbs = [ + InstallerServer::STEP_CONFIG_FILES => $isUpgrade ? 'Updating' : 'Creating', + InstallerServer::STEP_DOCKER_COMPOSE => $isUpgrade ? 'Updating' : 'Generating', + InstallerServer::STEP_ENV_VARS => $isUpgrade ? 'Updating' : 'Configuring', + InstallerServer::STEP_DOCKER_CONTAINERS => $isUpgrade ? 'Restarting' : 'Starting', + ]; + + return [ + InstallerServer::STEP_CONFIG_FILES => [ + 'start' => $verbs[InstallerServer::STEP_CONFIG_FILES] . ' configuration files...', + 'done' => 'Configuration files ' . $isUpgradeLabel, + ], + InstallerServer::STEP_DOCKER_COMPOSE => [ + 'start' => $verbs[InstallerServer::STEP_DOCKER_COMPOSE] . ' Docker Compose file...', + 'done' => 'Docker Compose file ' . $isUpgradeLabel, + ], + InstallerServer::STEP_ENV_VARS => [ + 'start' => $verbs[InstallerServer::STEP_ENV_VARS] . ' environment variables...', + 'done' => 'Environment variables ' . $isUpgradeLabel, + ], + InstallerServer::STEP_DOCKER_CONTAINERS => [ + 'start' => $verbs[InstallerServer::STEP_DOCKER_CONTAINERS] . ' Docker containers...', + 'done' => $isUpgrade ? 'Docker containers restarted' : 'Docker containers started', + ], + ]; + } + + private function writeComposeFile(View $template): void + { + $composeFileName = $this->getComposeFileName(); + $targetPath = $this->path . '/' . $composeFileName; + $renderedContent = $template->render(false); + + $result = @file_put_contents($targetPath, $renderedContent); + if ($result === false) { + $lastError = error_get_last(); + $errorMsg = $lastError ? $lastError['message'] : 'Unknown error'; + throw new \Exception('Failed to save Docker Compose file: ' . $errorMsg . ' (path: ' . $targetPath . ')'); + } + } + + private function writeEnvFile(View $template): void + { + $envFileName = $this->getEnvFileName(); + if (!\file_put_contents($this->path . '/' . $envFileName, $template->render(false))) { + throw new \Exception('Failed to save environment variables file'); + } + } + + private function copyMongoEntrypointIfNeeded(): void + { + $mongoEntrypoint = $this->buildFromProjectPath('/mongo-entrypoint.sh'); + + if (file_exists($mongoEntrypoint)) { + // Always use container path for file operations + copy($mongoEntrypoint, $this->path . '/mongo-entrypoint.sh'); + } + } + + protected function runDockerCompose(array $input, bool $isLocalInstall, bool $useExistingConfig, bool $isCLI): void + { + $env = ''; + if (!$useExistingConfig) { + foreach ($input as $key => $value) { + if ($value === null || $value === '') { + continue; + } + if (!preg_match(self::PATTERN_ENV_VAR_NAME, $key)) { + throw new \Exception("Invalid environment variable name: $key"); + } + $env .= $key . '=' . \escapeshellarg((string) $value) . ' '; + } + } + + if ($isCLI) { + Console::log("Running \"docker compose up -d --remove-orphans --renew-anon-volumes\""); + } + + $composeFileName = $this->getComposeFileName(); + $composeFile = $this->path . '/' . $composeFileName; + + $command = [ + 'docker', + 'compose', + '-f', + $composeFile, + ]; + + if ($isLocalInstall) { + $command[] = '--project-name'; + $command[] = 'appwrite'; + } + + $command[] = '--project-directory'; + $command[] = $this->path; + $command[] = 'up'; + $command[] = '-d'; + $command[] = '--remove-orphans'; + $command[] = '--renew-anon-volumes'; + $commandLine = $env . implode(' ', array_map(escapeshellarg(...), $command)) . ' 2>&1'; + \exec($commandLine, $output, $exit); + + if ($exit !== 0) { + $message = trim(implode("\n", $output)); + $previous = $message !== '' ? new \RuntimeException($message) : null; + throw new \RuntimeException('Failed to start containers', 0, $previous); + } + if ($isLocalInstall && $isCLI && !empty($output)) { + Console::log(implode("\n", $output)); + } + } + + protected function isLocalInstall(): bool + { + if ($this->isLocalInstall === null) { + $config = $this->readInstallerConfig(); + $this->isLocalInstall = !empty($config['isLocal']); + } + + return $this->isLocalInstall; + } + + protected function readInstallerConfig(): array + { + if ($this->installerConfig !== null) { + return $this->installerConfig; + } + + $this->installerConfig = []; + $decodeConfig = static function (string $json): ?array { + $decoded = json_decode($json, true); + return is_array($decoded) ? $decoded : null; + }; + + $json = getenv('APPWRITE_INSTALLER_CONFIG'); + $path = InstallerServer::INSTALLER_CONFIG_FILE; + $fileJson = file_exists($path) ? file_get_contents($path) : null; + + foreach ([$json, $fileJson] as $candidate) { + if (!is_string($candidate) || $candidate === '') { + continue; + } + + $decoded = $decodeConfig($candidate); + if ($decoded !== null) { + $this->installerConfig = $decoded; + return $this->installerConfig; + } + } + + return $this->installerConfig; + } + + protected function getInstallerHostPath(): string + { + $config = $this->readInstallerConfig(); + if (!empty($config['hostPath'])) { + return (string) $config['hostPath']; + } + + $cwd = getcwd(); + return $cwd !== false ? $cwd : '.'; + } + + protected function buildFromProjectPath(string $suffix): string + { + if ($suffix !== '' && $suffix[0] !== '/') { + $suffix = '/' . $suffix; + } + return dirname(__DIR__, 4) . $suffix; + } + + protected function applyLocalPaths(bool $isLocalInstall, bool $force = false): void + { + if (!$isLocalInstall) { + return; + } + if (!$force && $this->hostPath !== '') { + return; + } + $this->path = '/usr/src/code'; + $this->hostPath = $this->getInstallerHostPath(); + } + + protected function readExistingCompose(): string + { + $composeFile = $this->path . '/' . $this->getComposeFileName(); + $data = @file_get_contents($composeFile); + return !empty($data) ? $data : ''; + } + + protected function generatePasswordValue(string $varName, Password $password): string + { + $value = $password->generate(); + if (!\preg_match(self::PATTERN_DB_PASSWORD_VAR, $varName)) { + return $value; + } + + return rtrim(strtr(base64_encode(hash('sha256', $value, true)), '+/', '-_'), '='); + } + + protected function getComposeFileName(): string + { + return $this->isLocalInstall() ? 'docker-compose.web-installer.yml' : 'docker-compose.yml'; + } + + protected function getEnvFileName(): string + { + return $this->isLocalInstall() ? '.env.web-installer' : '.env'; + } + + private function isInstallationComplete(int $port): bool + { + $maxAttempts = 7200; // 2 hours maximum + $attempt = 0; + while ($attempt < $maxAttempts) { + if (file_exists(InstallerServer::INSTALLER_COMPLETE_FILE)) { + return true; + } + $handle = @fsockopen('localhost', $port, $errno, $errstr, 1); + if ($handle === false) { + return false; + } + \fclose($handle); + \sleep(1); + $attempt++; + } + return false; + } + + private function waitForWebServer(int $port): bool + { + for ($attempt = 0; $attempt < self::WEB_SERVER_CHECK_ATTEMPTS; $attempt++) { + $handle = @fsockopen('localhost', $port, $errno, $errstr, 1); + if ($handle !== false) { + \fclose($handle); + return true; + } + \sleep(self::WEB_SERVER_CHECK_DELAY_SECONDS); + } + return false; + } } diff --git a/src/Appwrite/Platform/Tasks/Migrate.php b/src/Appwrite/Platform/Tasks/Migrate.php index cec2f6ec27..b952808998 100644 --- a/src/Appwrite/Platform/Tasks/Migrate.php +++ b/src/Appwrite/Platform/Tasks/Migrate.php @@ -31,7 +31,7 @@ class Migrate extends Action ->inject('dbForPlatform') ->inject('getProjectDB') ->inject('register') - ->inject('authorisation') + ->inject('authorization') ->callback($this->action(...)); } @@ -64,8 +64,43 @@ class Migrate extends Action /** @var Migration $migration */ $migration = new $class(); + // Disable subquery filters that reference new schema columns not yet migrated + $subQueries = [ + 'subQueryAccountKeys', + 'subQueryAttributes', + 'subQueryAuthenticators', + 'subQueryChallenges', + 'subQueryDevKeys', + 'subQueryIndexes', + 'subQueryKeys', + 'subQueryMemberships', + 'subQueryOrganizationKeys', + 'subQueryPlatforms', + 'subQueryProjectVariables', + 'subQuerySessions', + 'subQueryTargets', + 'subQueryTokens', + 'subQueryTopicTargets', + 'subQueryVariables', + 'subQueryWebhooks', + ]; + foreach ($subQueries as $name) { + Database::addFilter( + $name, + fn () => null, + fn () => [] + ); + } + + $dbForPlatform->disableValidation(); + $dbForPlatform->purgeCachedCollection('projects'); + $count = 0; - $total = $dbForPlatform->count('projects') + 1; + try { + $total = $dbForPlatform->count('projects') + 1; + } catch (\Throwable) { + $total = 0; + } $dbForPlatform->foreach('projects', function (Document $project) use ($dbForPlatform, $getProjectDB, $register, $migration, &$count, $total, $authorization) { /** @var Database $dbForProject */ @@ -74,9 +109,14 @@ class Migrate extends Action try { $migration - ->setProject($project, $dbForProject, $dbForPlatform, $authorization, $getProjectDB) - ->setPDO($register->get('db', true)) - ->execute(); + ->setProject($project, $dbForProject, $dbForPlatform, $authorization, $getProjectDB); + + $db = $register->get('db', true); + if ($db instanceof \Utopia\Database\PDO) { + $migration->setPDO($db); + } + + $migration->execute(); } catch (\Throwable $th) { Console::error('Failed to migrate project "' . $project->getId() . '" with error: ' . $th->getMessage()); throw $th; @@ -89,9 +129,14 @@ class Migrate extends Action try { $migration - ->setProject($console, $getProjectDB($console), $dbForPlatform, $authorization, $getProjectDB) - ->setPDO($register->get('db', true)) - ->execute(); + ->setProject($console, $getProjectDB($console), $dbForPlatform, $authorization, $getProjectDB); + + $db = $register->get('db', true); + if ($db instanceof \Utopia\Database\PDO) { + $migration->setPDO($db); + } + + $migration->execute(); } catch (\Throwable $th) { Console::error('Failed to migrate project "console" with error: ' . $th->getMessage()); throw $th; diff --git a/src/Appwrite/Platform/Tasks/Upgrade.php b/src/Appwrite/Platform/Tasks/Upgrade.php index 2e77ddd885..7214ca2e8c 100644 --- a/src/Appwrite/Platform/Tasks/Upgrade.php +++ b/src/Appwrite/Platform/Tasks/Upgrade.php @@ -5,12 +5,13 @@ namespace Appwrite\Platform\Tasks; use Appwrite\Docker\Compose; use Appwrite\Docker\Env; use Utopia\Console; -use Utopia\System\System; use Utopia\Validator\Boolean; use Utopia\Validator\Text; class Upgrade extends Install { + private ?string $lockedDatabase = null; + public static function getName(): string { return 'upgrade'; @@ -18,6 +19,8 @@ class Upgrade extends Install public function __construct() { + parent::__construct(); + $this ->desc('Upgrade Appwrite') ->param('http-port', '', new Text(4), 'Server HTTP port', true) @@ -30,20 +33,31 @@ class Upgrade extends Install ->callback($this->action(...)); } - public function action(string $httpPort, string $httpsPort, string $organization, string $image, string $interactive, bool $noStart, string $database): void - { + public function action( + string $httpPort, + string $httpsPort, + string $organization, + string $image, + string $interactive, + bool $noStart, + string $database + ): void { + $isLocalInstall = $this->isLocalInstall(); + $this->applyLocalPaths($isLocalInstall, true); + // Check for previous installation - $data = @file_get_contents($this->path . '/docker-compose.yml'); + $data = $this->readExistingCompose(); if (empty($data)) { Console::error('Appwrite installation not found.'); Console::log('The command was not run in the parent folder of your appwrite installation.'); Console::log('Please navigate to the parent directory of the Appwrite installation and try again.'); Console::log(' parent_directory <= you run the command in this directory'); Console::log(' └── appwrite'); - Console::log(' └── docker-compose.yml'); - Console::exit(1); + Console::log(' └── ' . $this->getComposeFileName()); + return; } + // Detect database from existing installation (CLI param is intentionally ignored) $database = null; $compose = new Compose($data); foreach ($compose->getServices() as $service) { @@ -66,10 +80,35 @@ class Upgrade extends Install } if ($database === null) { - // TODO: Change default to 'mongodb' after next release - $database = System::getEnv('_APP_DB_ADAPTER', 'mariadb'); + // Pre-1.9.0 installations only supported MariaDB + $database = 'mariadb'; + Console::info('No _APP_DB_ADAPTER found in existing configuration, defaulting to mariadb.'); } + $this->lockedDatabase = $database; + parent::action($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database); } + + protected function startWebServer( + string $defaultHttpPort, + string $defaultHttpsPort, + string $organization, + string $image, + bool $noStart, + array $vars, + bool $isUpgrade = false, + ?string $lockedDatabase = null + ): void { + parent::startWebServer( + $defaultHttpPort, + $defaultHttpsPort, + $organization, + $image, + $noStart, + $vars, + true, + $this->lockedDatabase + ); + } } diff --git a/src/Appwrite/Platform/Workers/Deletes.php b/src/Appwrite/Platform/Workers/Deletes.php index 25a899bf12..3065b2377f 100644 --- a/src/Appwrite/Platform/Workers/Deletes.php +++ b/src/Appwrite/Platform/Workers/Deletes.php @@ -1008,7 +1008,6 @@ class Deletes extends Action */ Console::info("Deleting rules for site " . $siteId); $this->deleteByGroup('rules', [ - Query::equal('type', ['deployment']), Query::equal('deploymentResourceType', ['site']), Query::equal('deploymentResourceInternalId', [$siteInternalId]), Query::equal('projectInternalId', [$project->getSequence()]) @@ -1094,7 +1093,6 @@ class Deletes extends Action */ Console::info("Deleting rules for function " . $functionId); $this->deleteByGroup('rules', [ - Query::equal('type', ['deployment']), Query::equal('deploymentResourceType', ['function']), Query::equal('deploymentResourceInternalId', [$functionInternalId]), Query::equal('projectInternalId', [$project->getSequence()]), diff --git a/src/Appwrite/Platform/Workers/Functions.php b/src/Appwrite/Platform/Workers/Functions.php index 29ccb0ef09..3f19abdf22 100644 --- a/src/Appwrite/Platform/Workers/Functions.php +++ b/src/Appwrite/Platform/Workers/Functions.php @@ -513,7 +513,7 @@ class Functions extends Action $command = $runtime['startCommand']; if (!empty($deployment->getAttribute('startCommand', ''))) { - $command = 'cd /usr/local/server/src/function/ && ' . $deployment->getAttribute('startCommand', ''); + $command = 'cd /usr/local/server/src/function/ && ' . str_replace(['"', '`', '$'], ['\\"', '\\`', '\\$'], $deployment->getAttribute('startCommand', '')); } $source = $deployment->getAttribute('buildPath', ''); diff --git a/src/Appwrite/Platform/Workers/Migrations.php b/src/Appwrite/Platform/Workers/Migrations.php index ce20358626..25d5bfa027 100644 --- a/src/Appwrite/Platform/Workers/Migrations.php +++ b/src/Appwrite/Platform/Workers/Migrations.php @@ -332,6 +332,8 @@ class Migrations extends Action 'messages.write', 'targets.read', 'targets.write', + 'webhooks.read', + 'webhooks.write' ] ]); diff --git a/src/Appwrite/Platform/Workers/StatsUsage.php b/src/Appwrite/Platform/Workers/StatsUsage.php index 07051d1f15..76be33d06b 100644 --- a/src/Appwrite/Platform/Workers/StatsUsage.php +++ b/src/Appwrite/Platform/Workers/StatsUsage.php @@ -479,7 +479,8 @@ class StatsUsage extends Action } } $documentClone = clone $stat; - $documentClone->setAttribute('$tenant', (int) $project->getSequence()); + $dbForLogs = ($this->getLogsDB)(); + $documentClone->setAttribute('$tenant', $project->getSequence()); $this->statDocuments[] = $documentClone; } diff --git a/src/Appwrite/SDK/Specification/Format/OpenAPI3.php b/src/Appwrite/SDK/Specification/Format/OpenAPI3.php index 748a288297..8c77da413f 100644 --- a/src/Appwrite/SDK/Specification/Format/OpenAPI3.php +++ b/src/Appwrite/SDK/Specification/Format/OpenAPI3.php @@ -843,8 +843,7 @@ class OpenAPI3 extends Format break; case 'id': - $type = 'integer'; - $format = $rule['format'] ?? 'int32'; + $type = 'string'; break; case 'enum': diff --git a/src/Appwrite/SDK/Specification/Format/Swagger2.php b/src/Appwrite/SDK/Specification/Format/Swagger2.php index 17ec03f297..d0815d8cad 100644 --- a/src/Appwrite/SDK/Specification/Format/Swagger2.php +++ b/src/Appwrite/SDK/Specification/Format/Swagger2.php @@ -823,8 +823,7 @@ class Swagger2 extends Format break; case 'id': - $type = 'integer'; - $format = $rule['format'] ?? 'int32'; + $type = 'string'; break; case 'enum': diff --git a/src/Appwrite/Utopia/Database/Validator/Queries/Webhooks.php b/src/Appwrite/Utopia/Database/Validator/Queries/Webhooks.php new file mode 100644 index 0000000000..fa20bf34ef --- /dev/null +++ b/src/Appwrite/Utopia/Database/Validator/Queries/Webhooks.php @@ -0,0 +1,26 @@ +fillWebhookid($content); + break; case 'functions.createTemplateDeployment': case 'sites.createTemplateDeployment': $content = $this->convertVersionToTypeAndReference($content); @@ -48,4 +51,10 @@ class V21 extends Filter return $content; } + + protected function fillWebhookid(array $content): array + { + $content['webhookId'] = $content['webhookId'] ?? 'unique()'; + return $content; + } } diff --git a/src/Appwrite/Utopia/Response/Filters/V21.php b/src/Appwrite/Utopia/Response/Filters/V21.php index 4a414a9418..b65e26a8b0 100644 --- a/src/Appwrite/Utopia/Response/Filters/V21.php +++ b/src/Appwrite/Utopia/Response/Filters/V21.php @@ -10,8 +10,6 @@ class V21 extends Filter { public function parse(array $content, string $model): array { - $parsedResponse = $content; - return match ($model) { Response::MODEL_SITE => $this->parseSite($content), Response::MODEL_SITE_LIST => $this->handleList( @@ -25,7 +23,19 @@ class V21 extends Filter "functions", fn ($item) => $this->parseFunction($item), ), - default => $parsedResponse, + Response::MODEL_DOCUMENT => $this->parseDocument($content), + Response::MODEL_DOCUMENT_LIST => $this->handleList( + $content, + "documents", + fn ($item) => $this->parseDocument($item), + ), + Response::MODEL_ROW => $this->parseRow($content), + Response::MODEL_ROW_LIST => $this->handleList( + $content, + "rows", + fn ($item) => $this->parseRow($item), + ), + default => $content, }; } @@ -48,4 +58,39 @@ class V21 extends Filter unset($content['runtimeSpecification']); return $content; } + + protected function parseDocument(array $content): array + { + return $this->castSequence($content); + } + + protected function parseRow(array $content): array + { + return $this->castSequence($content); + } + + protected function castSequence(array $content): array + { + if (isset($content['$sequence'])) { + $content['$sequence'] = \is_numeric($content['$sequence']) + ? (int)$content['$sequence'] + : 0; + } + + foreach ($content as $key => $value) { + if (\is_array($value)) { + if (isset($value['$id'])) { + $content[$key] = $this->castSequence($value); + } else { + foreach ($value as $i => $item) { + if (\is_array($item) && isset($item['$id'])) { + $content[$key][$i] = $this->castSequence($item); + } + } + } + } + } + + return $content; + } } diff --git a/src/Appwrite/Utopia/Response/Model/Document.php b/src/Appwrite/Utopia/Response/Model/Document.php index e0aca32b3b..3be003418d 100644 --- a/src/Appwrite/Utopia/Response/Model/Document.php +++ b/src/Appwrite/Utopia/Response/Model/Document.php @@ -83,8 +83,8 @@ class Document extends Any $document->removeAttribute('$collection'); $document->removeAttribute('$tenant'); - if (!$document->isEmpty() && \is_numeric($document->getAttribute('$sequence', 0))) { - $document->setAttribute('$sequence', (int)$document->getAttribute('$sequence', 0)); + if (!$document->isEmpty()) { + $document->setAttribute('$sequence', (string)$document->getAttribute('$sequence', '')); } foreach ($document->getAttributes() as $attribute) { diff --git a/src/Appwrite/Utopia/Response/Model/Row.php b/src/Appwrite/Utopia/Response/Model/Row.php index a96df44bc3..4c7426c4bc 100644 --- a/src/Appwrite/Utopia/Response/Model/Row.php +++ b/src/Appwrite/Utopia/Response/Model/Row.php @@ -83,8 +83,8 @@ class Row extends Any $document->removeAttribute('$collection'); $document->removeAttribute('$tenant'); - if (!$document->isEmpty() && \is_numeric($document->getAttribute('$sequence', 0))) { - $document->setAttribute('$sequence', (int)$document->getAttribute('$sequence', 0)); + if (!$document->isEmpty()) { + $document->setAttribute('$sequence', (string)$document->getAttribute('$sequence', '')); } foreach ($document->getAttributes() as $column) { diff --git a/src/Appwrite/Utopia/Response/Model/Webhook.php b/src/Appwrite/Utopia/Response/Model/Webhook.php index af1e23447e..517ad4807d 100644 --- a/src/Appwrite/Utopia/Response/Model/Webhook.php +++ b/src/Appwrite/Utopia/Response/Model/Webhook.php @@ -10,7 +10,7 @@ class Webhook extends Model /** * @var bool */ - protected bool $public = false; + protected bool $public = true; public function __construct() { diff --git a/tests/e2e/General/UsageTest.php b/tests/e2e/General/UsageTest.php index de5933ce8a..0e484d4dcf 100644 --- a/tests/e2e/General/UsageTest.php +++ b/tests/e2e/General/UsageTest.php @@ -531,10 +531,7 @@ class UsageTest extends Scope $attr = $this->client->call( Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $collectionId . '/attributes/name', - array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'] - ], $this->getHeaders()) + $this->getConsoleHeaders() ); $this->assertEquals(200, $attr['headers']['status-code']); $this->assertEquals('available', $attr['body']['status']); @@ -784,10 +781,7 @@ class UsageTest extends Scope $attr = $this->client->call( Client::METHOD_GET, '/tablesdb/' . $databaseId . '/tables/' . $tableId . '/columns/name', - array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'] - ], $this->getHeaders()) + $this->getConsoleHeaders() ); $this->assertEquals(200, $attr['headers']['status-code']); $this->assertEquals('available', $attr['body']['status']); @@ -1062,9 +1056,7 @@ class UsageTest extends Scope $response = $this->client->call( Client::METHOD_GET, '/functions/' . $functionId . '/executions/' . $executionId, - array_merge([ - 'x-appwrite-project' => $this->getProject()['$id'] - ], $this->getHeaders()), + $this->getConsoleHeaders(), ); $this->assertContains($response['body']['status'], ['completed', 'failed']); }, 30_000, 500); diff --git a/tests/e2e/Scopes/ProjectCustom.php b/tests/e2e/Scopes/ProjectCustom.php index c7e3a520b6..b8b6f38643 100644 --- a/tests/e2e/Scopes/ProjectCustom.php +++ b/tests/e2e/Scopes/ProjectCustom.php @@ -161,6 +161,8 @@ trait ProjectCustom 'migrations.read', 'tokens.read', 'tokens.write', + 'webhooks.read', + 'webhooks.write', ], ]); @@ -191,12 +193,14 @@ trait ProjectCustom $this->assertNotEmpty($devKey['body']); $this->assertNotEmpty($devKey['body']['secret']); - $webhook = $this->client->call(Client::METHOD_POST, '/projects/' . $project['body']['$id'] . '/webhooks', [ + $webhook = $this->client->call(Client::METHOD_POST, '/webhooks', [ 'origin' => 'http://localhost', 'content-type' => 'application/json', 'cookie' => 'a_session_console=' . $this->getRoot()['session'], - 'x-appwrite-project' => 'console', + 'x-appwrite-project' => $project['body']['$id'], + 'x-appwrite-mode' => 'admin' ], [ + 'webhookId' => 'unique()', 'name' => 'Webhook Test', 'events' => [ 'databases.*', diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index 7f23f2966c..aecad983de 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -2566,9 +2566,7 @@ trait DatabasesBase $this->assertEquals($document1['body']['birthDay'], '1975-06-12T12:12:55.000+00:00'); $this->assertTrue(array_key_exists('$sequence', $document1['body'])); - $this->getSupportForIntegerIds() - ? $this->assertIsInt($document1['body']['$sequence']) - : $this->assertIsString($document1['body']['$sequence']); + $this->assertIsString($document1['body']['$sequence']); $this->assertEquals(201, $document2['headers']['status-code']); $this->assertEquals($data['moviesId'], $document2['body'][$this->getContainerIdResponseKey()]); @@ -2640,9 +2638,7 @@ trait DatabasesBase /** * Resubmit same document, nothing to update */ - $this->getSupportForIntegerIds() - ? $this->assertIsInt($document['body']['$sequence']) - : $this->assertIsString($document['body']['$sequence']); + $this->assertIsString($document['body']['$sequence']); $upsertData = [ 'title' => 'Thor: Ragnarok', diff --git a/tests/e2e/Services/Databases/Permissions/DatabasesPermissionsBase.php b/tests/e2e/Services/Databases/Permissions/DatabasesPermissionsBase.php index 499f2ee265..d6869cc650 100644 --- a/tests/e2e/Services/Databases/Permissions/DatabasesPermissionsBase.php +++ b/tests/e2e/Services/Databases/Permissions/DatabasesPermissionsBase.php @@ -59,7 +59,7 @@ trait DatabasesPermissionsBase 'password' => $password ]); - $this->assertEquals(201, $user['headers']['status-code']); + $this->assertContains($user['headers']['status-code'], [201, 409]); $session = $this->client->call(Client::METHOD_POST, '/account/sessions/email', [ 'origin' => 'http://localhost', @@ -72,9 +72,12 @@ trait DatabasesPermissionsBase $session = $session['cookies']['a_session_' . $this->getProject()['$id']]; + $userId = $user['headers']['status-code'] === 201 ? $user['body']['$id'] : $id; + $userEmail = $user['headers']['status-code'] === 201 ? $user['body']['email'] : $email; + $user = [ - '$id' => $user['body']['$id'], - 'email' => $user['body']['email'], + '$id' => $userId, + 'email' => $userEmail, 'session' => $session, ]; $this->users[$id] = $user; @@ -94,6 +97,12 @@ trait DatabasesPermissionsBase 'teamId' => $id, 'name' => $name ]); + $this->assertContains($team['headers']['status-code'], [201, 409]); + + if ($team['headers']['status-code'] === 409) { + $team = $this->client->call(Client::METHOD_GET, '/teams/' . $id, $this->getServerHeader()); + } + $this->teams[$id] = $team['body']; return $team['body']; diff --git a/tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php b/tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php index c0d880e739..b5c5e854a1 100644 --- a/tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php +++ b/tests/e2e/Services/Databases/Permissions/LegacyPermissionsTeamTest.php @@ -22,7 +22,7 @@ class LegacyPermissionsTeamTest extends Scope use SchemaPolling; public array $collections = []; - public string $databaseId = 'testpermissiondb'; + public string $databaseId = 'testpermdb_legacy'; public function createTeams(): array { diff --git a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php index 585ac56280..508ddede4a 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php @@ -1727,6 +1727,70 @@ class FunctionsCustomServerTest extends Scope $this->assertEquals(404, $function['headers']['status-code']); } + public function testDeleteFunctionRulesCleanup(): void + { + $functionId = $this->setupFunction([ + 'functionId' => ID::unique(), + 'name' => 'Test Rules Cleanup Function', + 'runtime' => 'node-22', + 'entrypoint' => 'index.js', + 'timeout' => 15, + ]); + + $this->assertNotEmpty($functionId); + + // Create a manual deployment rule (type = 'deployment') + $domain = $this->setupFunctionDomain($functionId); + $this->assertNotEmpty($domain); + + // Create a redirect rule (type = 'redirect') + $redirectDomain = \uniqid() . '-redirect-cleanup.custom.localhost'; + $redirectRule = $this->client->call(Client::METHOD_POST, '/proxy/rules/redirect', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'domain' => $redirectDomain, + 'url' => 'https://appwrite.io', + 'statusCode' => 301, + 'resourceType' => 'function', + 'resourceId' => $functionId, + ]); + + $this->assertEquals(201, $redirectRule['headers']['status-code']); + $this->assertNotEmpty($redirectRule['body']['$id']); + + // Verify both rules exist (no type filter — catches all rule types) + $rules = $this->client->call(Client::METHOD_GET, '/proxy/rules', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [ + Query::equal('deploymentResourceId', [$functionId])->toString() + ] + ]); + + $this->assertEquals(200, $rules['headers']['status-code']); + $this->assertGreaterThanOrEqual(2, $rules['body']['total']); + + // Delete the function + $this->cleanupFunction($functionId); + + // Verify ALL rules (deployment + redirect) are cleaned up + $this->assertEventually(function () use ($functionId) { + $rules = $this->client->call(Client::METHOD_GET, '/proxy/rules', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [ + Query::equal('deploymentResourceId', [$functionId])->toString() + ] + ]); + + $this->assertEquals(200, $rules['headers']['status-code']); + $this->assertEquals(0, $rules['body']['total']); + }, 5000, 500); + } + public function testExecutionTimeout() { $functionId = $this->setupFunction([ diff --git a/tests/e2e/Services/ProjectWebhooks/WebhooksBase.php b/tests/e2e/Services/ProjectWebhooks/WebhooksBase.php new file mode 100644 index 0000000000..0f1ff7eab3 --- /dev/null +++ b/tests/e2e/Services/ProjectWebhooks/WebhooksBase.php @@ -0,0 +1,1838 @@ +assertEventually(function () use ($functionId, $deploymentId) { + $deployment = $this->client->call(Client::METHOD_GET, '/functions/' . $functionId . '/deployments/' . $deploymentId, [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'], + ]); + + $this->assertEquals(200, $deployment['headers']['status-code']); + $this->assertEquals('ready', $deployment['body']['status'], \json_encode($deployment['body'])); + }, 120000, 500); + } + + /** + * Create a probe callback that filters webhooks by event pattern. + */ + private function webhookEventProbe(string $eventPattern): callable + { + return function (array $request) use ($eventPattern) { + $this->assertStringContainsString( + $eventPattern, + $request['headers']['X-Appwrite-Webhook-Events'] ?? '' + ); + }; + } + + public static function getWebhookSignature(array $webhook, string $signatureKey): string + { + $payload = json_encode($webhook['data']); + $url = $webhook['url']; + return base64_encode(hash_hmac('sha1', $url . $payload, $signatureKey, true)); + } + + /** + * Creates a database and collection with proper attributes for document operations. + * + * @return array Array containing 'databaseId' and 'actorsId' + */ + protected function setupCollectionWithAttributes(): array + { + // Create database + $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'databaseId' => ID::unique(), + 'name' => 'Actors DB', + ]); + + $databaseId = $database['body']['$id']; + + // Create collection + $actors = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'collectionId' => ID::unique(), + 'name' => 'Actors', + 'permissions' => [ + Permission::read(Role::any()), + Permission::create(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + 'documentSecurity' => true, + ]); + + $actorsId = $actors['body']['$id']; + + // Create attributes + $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/attributes/string', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'firstName', + 'size' => 256, + 'required' => true, + ]); + + $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/attributes/string', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'lastName', + 'size' => 256, + 'required' => true, + ]); + + // Wait for attributes to be available + $this->assertEventually(function () use ($databaseId, $actorsId) { + $collection = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $actorsId, [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'], + ]); + $this->assertCount(2, $collection['body']['attributes']); + $this->assertEquals('available', $collection['body']['attributes'][0]['status']); + $this->assertEquals('available', $collection['body']['attributes'][1]['status']); + }, 15000, 500); + + return ['databaseId' => $databaseId, 'actorsId' => $actorsId]; + } + + /** + * Creates a database and table with proper columns for row operations. + * + * @return array Array containing 'databaseId' and 'actorsId' + */ + protected function setupTableWithColumns(): array + { + // Create database + $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'databaseId' => ID::unique(), + 'name' => 'Actors DB', + ]); + + $databaseId = $database['body']['$id']; + + // Create table + $actors = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'tableId' => ID::unique(), + 'name' => 'Actors', + 'permissions' => [ + Permission::read(Role::any()), + Permission::create(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + 'rowSecurity' => true, + ]); + + $actorsId = $actors['body']['$id']; + + // Create columns + $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/columns/string', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'firstName', + 'size' => 256, + 'required' => true, + ]); + + $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/columns/string', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'lastName', + 'size' => 256, + 'required' => true, + ]); + + // Wait for columns to be available + $this->assertEventually(function () use ($databaseId, $actorsId) { + $table = $this->client->call(Client::METHOD_GET, '/tablesdb/' . $databaseId . '/tables/' . $actorsId, [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'], + ]); + $this->assertCount(2, $table['body']['columns']); + $this->assertEquals('available', $table['body']['columns'][0]['status']); + $this->assertEquals('available', $table['body']['columns'][1]['status']); + }, 15000, 500); + + return ['databaseId' => $databaseId, 'actorsId' => $actorsId]; + } + + /** + * Creates an enabled storage bucket. + * + * @return array Array containing 'bucketId' + */ + protected function setupStorageBucket(): array + { + $bucket = $this->client->call(Client::METHOD_POST, '/storage/buckets', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'bucketId' => ID::unique(), + 'name' => 'Test Bucket', + 'permissions' => [ + Permission::read(Role::any()), + Permission::create(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + 'fileSecurity' => true, + 'enabled' => true, + ]); + + return ['bucketId' => $bucket['body']['$id']]; + } + + /** + * Creates a team and returns its ID. + * + * @param string $name Team name + * @return array Array containing 'teamId' + */ + protected function setupTeam(string $name = 'Arsenal'): array + { + $team = $this->client->call(Client::METHOD_POST, '/teams', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'teamId' => ID::unique(), + 'name' => $name + ]); + + return ['teamId' => $team['body']['$id']]; + } + + /** + * Creates a team membership and returns membership details including secret. + * + * @param string $teamId The team ID + * @return array Array containing 'teamId', 'membershipId', 'userId', 'secret' + */ + protected function setupTeamMembership(string $teamId): array + { + $email = uniqid() . 'friend@localhost.test'; + + // Create user first to ensure team event is triggered after user event + $this->client->call(Client::METHOD_POST, '/account', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'userId' => ID::unique(), + 'email' => $email, + 'password' => 'password', + 'name' => 'Friend User', + ]); + + // Create membership + $team = $this->client->call(Client::METHOD_POST, '/teams/' . $teamId . '/memberships', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'email' => $email, + 'roles' => ['admin', 'editor'], + 'url' => 'http://localhost:5000/join-us#title' + ]); + + $membershipId = $team['body']['$id']; + $userId = $team['body']['userId']; + + // Get the secret from email (use probe to match correct email by recipient address) + $lastEmail = $this->getLastEmail(1, function ($msg) use ($email) { + $this->assertEquals($email, $msg['to'][0]['address'] ?? ''); + }); + $tokens = $this->extractQueryParamsFromEmailLink($lastEmail['html'] ?? ''); + $secret = $tokens['secret'] ?? ''; + + return [ + 'teamId' => $teamId, + 'membershipId' => $membershipId, + 'userId' => $userId, + 'secret' => $secret, + ]; + } + + /** + * Creates a document in a collection. + * + * @param string $databaseId Database ID + * @param string $collectionId Collection ID + * @return array Array containing document details including 'documentId' + */ + protected function setupDocument(string $databaseId, string $collectionId): array + { + $document = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $collectionId . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'documentId' => ID::unique(), + 'data' => [ + 'firstName' => 'Chris', + 'lastName' => 'Evans', + ], + 'permissions' => [ + Permission::read(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + ]); + + return ['documentId' => $document['body']['$id']]; + } + + /** + * Creates a row in a table. + * + * @param string $databaseId Database ID + * @param string $tableId Table ID + * @return array Array containing row details including 'rowId' + */ + protected function setupRow(string $databaseId, string $tableId): array + { + $row = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $tableId . '/rows', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'rowId' => ID::unique(), + 'data' => [ + 'firstName' => 'Chris', + 'lastName' => 'Evans', + ], + 'permissions' => [ + Permission::read(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + ]); + + return ['rowId' => $row['body']['$id']]; + } + + /** + * Creates a file in a bucket. + * + * @param string $bucketId Bucket ID + * @return array Array containing file details including 'fileId' + */ + protected function setupBucketFile(string $bucketId): array + { + $file = $this->client->call(Client::METHOD_POST, '/storage/buckets/' . $bucketId . '/files', array_merge([ + 'content-type' => 'multipart/form-data', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'fileId' => ID::unique(), + 'file' => new CURLFile(realpath(__DIR__ . '/../../../resources/logo.png'), 'image/png', 'logo.png'), + 'permissions' => [ + Permission::read(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + 'folderId' => ID::custom('xyz'), + ]); + + return ['fileId' => $file['body']['$id']]; + } + + // Collection APIs + public function testCreateCollection(): void + { + /** + * Create database + */ + $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'databaseId' => ID::unique(), + 'name' => 'Actors DB', + ]); + + $databaseId = $database['body']['$id']; + + /** + * Test for SUCCESS + */ + $actors = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'collectionId' => ID::unique(), + 'name' => 'Actors', + 'permissions' => [ + Permission::read(Role::any()), + Permission::create(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + 'documentSecurity' => true, + ]); + + $actorsId = $actors['body']['$id']; + + $this->assertEquals($actors['headers']['status-code'], 201); + $this->assertNotEmpty($actors['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.create")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), true); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals($webhook['data']['name'], 'Actors'); + $this->assertIsArray($webhook['data']['$permissions']); + $this->assertCount(4, $webhook['data']['$permissions']); + } + + public function testCreateAttributes(): void + { + /** + * Create database + */ + $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'databaseId' => ID::unique(), + 'name' => 'Actors DB', + ]); + + $databaseId = $database['body']['$id']; + + /** + * Create collection + */ + $actors = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'collectionId' => ID::unique(), + 'name' => 'Actors', + 'permissions' => [ + Permission::read(Role::any()), + Permission::create(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + 'documentSecurity' => true, + ]); + + $actorsId = $actors['body']['$id']; + + $firstName = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/attributes/string', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'firstName', + 'size' => 256, + 'required' => true, + ]); + + $lastName = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/attributes/string', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'lastName', + 'size' => 256, + 'required' => true, + ]); + + $extra = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/attributes/string', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'extra', + 'size' => 64, + 'required' => false, + ]); + + $attributeId = $extra['body']['key']; + + $this->assertEquals($firstName['headers']['status-code'], 202); + $this->assertEquals($firstName['body']['key'], 'firstName'); + $this->assertEquals($lastName['headers']['status-code'], 202); + $this->assertEquals($lastName['body']['key'], 'lastName'); + $this->assertEquals($extra['headers']['status-code'], 202); + $this->assertEquals($extra['body']['key'], 'extra'); + + // wait for database worker to kick in + $this->assertEventually(function () use ($databaseId, $actorsId) { + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.attributes.*.create")); + $this->assertNotEmpty($webhook); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.attributes.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.attributes.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.attributes.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.attributes.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertNotEmpty($webhook['data']['key']); + $this->assertEquals($webhook['data']['key'], 'extra'); + }, 15000, 500); + + $removed = $this->client->call(Client::METHOD_DELETE, '/databases/' . $databaseId . '/collections/' . $actorsId . '/attributes/' . $extra['body']['key'], array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ])); + + $this->assertEquals(204, $removed['headers']['status-code']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.attributes.*.update")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + // $this->assertEquals($webhook['method'], 'DELETE'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.attributes.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.attributes.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.attributes.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.attributes.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertNotEmpty($webhook['data']['key']); + $this->assertEquals($webhook['data']['key'], 'extra'); + } + + public function testCreateDocument(): void + { + // Set up collection with attributes + $data = $this->setupCollectionWithAttributes(); + $actorsId = $data['actorsId']; + $databaseId = $data['databaseId']; + + /** + * Test for SUCCESS + */ + $document = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'documentId' => ID::unique(), + 'data' => [ + 'firstName' => 'Chris', + 'lastName' => 'Evans', + ], + 'permissions' => [ + Permission::read(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + ]); + + $documentId = $document['body']['$id']; + + $this->assertEquals($document['headers']['status-code'], 201); + $this->assertNotEmpty($document['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}.create")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.documents.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.documents.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.*.documents.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.*.documents.{$documentId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals($webhook['data']['firstName'], 'Chris'); + $this->assertEquals($webhook['data']['lastName'], 'Evans'); + $this->assertIsArray($webhook['data']['$permissions']); + $this->assertCount(3, $webhook['data']['$permissions']); + } + + public function testUpdateDocument(): void + { + // Set up collection with attributes and create a document + $data = $this->setupCollectionWithAttributes(); + $actorsId = $data['actorsId']; + $databaseId = $data['databaseId']; + $documentData = $this->setupDocument($databaseId, $actorsId); + $documentId = $documentData['documentId']; + + /** + * Test for SUCCESS + */ + $document = $this->client->call(Client::METHOD_PATCH, '/databases/' . $databaseId . '/collections/' . $actorsId . '/documents/' . $documentId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'data' => [ + 'firstName' => 'Chris1', + 'lastName' => 'Evans2', + ], + 'permissions' => [ + Permission::read(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + ]); + + $documentId = $document['body']['$id']; + + $this->assertEquals($document['headers']['status-code'], 200); + $this->assertNotEmpty($document['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}.update")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.documents.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.documents.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.*.documents.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.*.documents.{$documentId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals($webhook['data']['firstName'], 'Chris1'); + $this->assertEquals($webhook['data']['lastName'], 'Evans2'); + $this->assertIsArray($webhook['data']['$permissions']); + $this->assertCount(3, $webhook['data']['$permissions']); + } + + #[Retry(count: 1)] + public function testDeleteDocument(): void + { + // Set up collection with attributes + $data = $this->setupCollectionWithAttributes(); + $actorsId = $data['actorsId']; + $databaseId = $data['databaseId']; + + /** + * Test for SUCCESS + */ + $document = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/documents', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'documentId' => ID::unique(), + 'data' => [ + 'firstName' => 'Bradly', + 'lastName' => 'Cooper', + + ], + 'permissions' => [ + Permission::read(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + ]); + + $documentId = $document['body']['$id']; + + $this->assertEquals($document['headers']['status-code'], 201); + $this->assertNotEmpty($document['body']['$id']); + + $document = $this->client->call(Client::METHOD_DELETE, '/databases/' . $databaseId . '/collections/' . $actorsId . '/documents/' . $document['body']['$id'], array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders())); + + $this->assertEquals($document['headers']['status-code'], 204); + + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}.delete")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.documents.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.documents.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.*.documents.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.*.documents.{$documentId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.*.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals($webhook['data']['firstName'], 'Bradly'); + $this->assertEquals($webhook['data']['lastName'], 'Cooper'); + $this->assertIsArray($webhook['data']['$permissions']); + $this->assertCount(3, $webhook['data']['$permissions']); + } + + // Table APIs + public function testCreateTable(): void + { + /** + * Create database + */ + $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'databaseId' => ID::unique(), + 'name' => 'Actors DB', + ]); + + $databaseId = $database['body']['$id']; + + /** + * Test for SUCCESS + */ + $actors = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'tableId' => ID::unique(), + 'name' => 'Actors', + 'permissions' => [ + Permission::read(Role::any()), + Permission::create(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + 'rowSecurity' => true, + ]); + + $actorsId = $actors['body']['$id']; + + $this->assertEquals($actors['headers']['status-code'], 201); + $this->assertNotEmpty($actors['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.create")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), true); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals($webhook['data']['name'], 'Actors'); + $this->assertIsArray($webhook['data']['$permissions']); + $this->assertCount(4, $webhook['data']['$permissions']); + } + + public function testCreateColumns(): void + { + /** + * Create database + */ + $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'databaseId' => ID::unique(), + 'name' => 'Actors DB', + ]); + + $databaseId = $database['body']['$id']; + + /** + * Create table + */ + $actors = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'tableId' => ID::unique(), + 'name' => 'Actors', + 'permissions' => [ + Permission::read(Role::any()), + Permission::create(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + 'rowSecurity' => true, + ]); + + $actorsId = $actors['body']['$id']; + + $firstName = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/columns/string', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'firstName', + 'size' => 256, + 'required' => true, + ]); + + $lastName = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/columns/string', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'lastName', + 'size' => 256, + 'required' => true, + ]); + + $extra = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/columns/string', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'extra', + 'size' => 64, + 'required' => false, + ]); + + $this->assertEquals($firstName['headers']['status-code'], 202); + $this->assertEquals($firstName['body']['key'], 'firstName'); + $this->assertEquals($lastName['headers']['status-code'], 202); + $this->assertEquals($lastName['body']['key'], 'lastName'); + $this->assertEquals($extra['headers']['status-code'], 202); + $this->assertEquals($extra['body']['key'], 'extra'); + + // wait for database worker to kick in + $this->assertEventually(function () use ($databaseId, $actorsId) { + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.columns.*.create")); + $this->assertNotEmpty($webhook); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.columns.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.columns.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.columns.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.columns.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertNotEmpty($webhook['data']['key']); + $this->assertEquals($webhook['data']['key'], 'extra'); + }, 15000, 500); + + $removed = $this->client->call(Client::METHOD_DELETE, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/columns/' . $extra['body']['key'], array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ])); + + $this->assertEquals(204, $removed['headers']['status-code']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.columns.*.update")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + // $this->assertEquals($webhook['method'], 'DELETE'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.columns.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.columns.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.columns.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.columns.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertNotEmpty($webhook['data']['key']); + $this->assertEquals($webhook['data']['key'], 'extra'); + } + + public function testCreateRow(): void + { + // Set up table with columns + $data = $this->setupTableWithColumns(); + $actorsId = $data['actorsId']; + $databaseId = $data['databaseId']; + + /** + * Test for SUCCESS + */ + $row = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/rows', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'rowId' => ID::unique(), + 'data' => [ + 'firstName' => 'Chris', + 'lastName' => 'Evans', + ], + 'permissions' => [ + Permission::read(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + ]); + + $documentId = $row['body']['$id']; + + $this->assertEquals($row['headers']['status-code'], 201); + $this->assertNotEmpty($row['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.rows.{$documentId}.create")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.rows.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.rows.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.*.rows.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.*.rows.{$documentId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.{$documentId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals($webhook['data']['firstName'], 'Chris'); + $this->assertEquals($webhook['data']['lastName'], 'Evans'); + $this->assertIsArray($webhook['data']['$permissions']); + $this->assertCount(3, $webhook['data']['$permissions']); + } + + public function testUpdateRow(): void + { + // Set up table with columns and create a row + $data = $this->setupTableWithColumns(); + $actorsId = $data['actorsId']; + $databaseId = $data['databaseId']; + $rowData = $this->setupRow($databaseId, $actorsId); + $rowId = $rowData['rowId']; + + /** + * Test for SUCCESS + */ + $document = $this->client->call(Client::METHOD_PATCH, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/rows/' . $rowId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'data' => [ + 'firstName' => 'Chris1', + 'lastName' => 'Evans2', + ], + 'permissions' => [ + Permission::read(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + ]); + + $rowId = $document['body']['$id']; + + $this->assertEquals($document['headers']['status-code'], 200); + $this->assertNotEmpty($document['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.rows.{$rowId}.update")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.rows.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.rows.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.*.rows.{$rowId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.*.rows.{$rowId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.{$rowId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.{$rowId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals($webhook['data']['firstName'], 'Chris1'); + $this->assertEquals($webhook['data']['lastName'], 'Evans2'); + $this->assertIsArray($webhook['data']['$permissions']); + $this->assertCount(3, $webhook['data']['$permissions']); + } + + #[Retry(count: 1)] + public function testDeleteRow(): void + { + // Set up table with columns + $data = $this->setupTableWithColumns(); + $actorsId = $data['actorsId']; + $databaseId = $data['databaseId']; + + /** + * Test for SUCCESS + */ + $row = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/rows', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'rowId' => ID::unique(), + 'data' => [ + 'firstName' => 'Bradly', + 'lastName' => 'Cooper', + + ], + 'permissions' => [ + Permission::read(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + ]); + + $rowId = $row['body']['$id']; + + $this->assertEquals($row['headers']['status-code'], 201); + $this->assertNotEmpty($row['body']['$id']); + + $row = $this->client->call(Client::METHOD_DELETE, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/rows/' . $row['body']['$id'], array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders())); + + $this->assertEquals($row['headers']['status-code'], 204); + + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.rows.{$rowId}.delete")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.rows.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.rows.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.*.rows.{$rowId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.*.rows.{$rowId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.*.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.{$rowId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.{$rowId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals($webhook['data']['firstName'], 'Bradly'); + $this->assertEquals($webhook['data']['lastName'], 'Cooper'); + $this->assertIsArray($webhook['data']['$permissions']); + $this->assertCount(3, $webhook['data']['$permissions']); + } + + public function testCreateStorageBucket(): void + { + /** + * Test for SUCCESS + */ + $bucket = $this->client->call(Client::METHOD_POST, '/storage/buckets', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'bucketId' => ID::unique(), + 'name' => 'Test Bucket', + 'permissions' => [ + Permission::read(Role::any()), + Permission::create(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + ]); + + $bucketId = $bucket['body']['$id']; + + $this->assertEquals($bucket['headers']['status-code'], 201); + $this->assertNotEmpty($bucket['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("buckets.{$bucketId}.create")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('buckets.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('buckets.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), true); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals('Test Bucket', $webhook['data']['name']); + $this->assertEquals(true, $webhook['data']['enabled']); + $this->assertIsArray($webhook['data']['$permissions']); + } + + public function testUpdateStorageBucket(): void + { + // Set up a storage bucket + $data = $this->setupStorageBucket(); + $bucketId = $data['bucketId']; + + /** + * Test for SUCCESS + */ + $bucket = $this->client->call(Client::METHOD_PUT, '/storage/buckets/' . $bucketId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'name' => 'Test Bucket Updated', + 'fileSecurity' => true, + 'enabled' => false, + ]); + + $this->assertEquals($bucket['headers']['status-code'], 200); + $this->assertNotEmpty($bucket['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("buckets.{$bucketId}.update")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('buckets.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('buckets.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), true); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals('Test Bucket Updated', $webhook['data']['name']); + $this->assertEquals(false, $webhook['data']['enabled']); + $this->assertIsArray($webhook['data']['$permissions']); + } + + public function testCreateBucketFile(): void + { + // Set up an enabled storage bucket + $data = $this->setupStorageBucket(); + $bucketId = $data['bucketId']; + + /** + * Test for SUCCESS + */ + $file = $this->client->call(Client::METHOD_POST, '/storage/buckets/' . $bucketId . '/files', array_merge([ + 'content-type' => 'multipart/form-data', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'fileId' => ID::unique(), + 'file' => new CURLFile(realpath(__DIR__ . '/../../../resources/logo.png'), 'image/png', 'logo.png'), + 'permissions' => [ + Permission::read(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + 'folderId' => ID::custom('xyz'), + ]); + + $fileId = $file['body']['$id']; + + $this->assertEquals($file['headers']['status-code'], 201); + $this->assertNotEmpty($file['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("buckets.{$bucketId}.files.{$fileId}.create")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('buckets.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('buckets.*.files.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('buckets.*.files.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.*.files.{$fileId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.*.files.{$fileId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}.files.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}.files.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}.files.{$fileId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}.files.{$fileId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertIsArray($webhook['data']['$permissions']); + $this->assertEquals($webhook['data']['name'], 'logo.png'); + $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['$createdAt'])); + $this->assertNotEmpty($webhook['data']['signature']); + $this->assertEquals($webhook['data']['mimeType'], 'image/png'); + $this->assertEquals($webhook['data']['sizeOriginal'], 47218); + } + + public function testUpdateBucketFile(): void + { + // Set up an enabled storage bucket and create a file + $data = $this->setupStorageBucket(); + $bucketId = $data['bucketId']; + $fileData = $this->setupBucketFile($bucketId); + $fileId = $fileData['fileId']; + + /** + * Test for SUCCESS + */ + $file = $this->client->call(Client::METHOD_PUT, '/storage/buckets/' . $bucketId . '/files/' . $fileId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'permissions' => [ + Permission::read(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + ]); + + $this->assertEquals($file['headers']['status-code'], 200); + $this->assertNotEmpty($file['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("buckets.{$bucketId}.files.{$fileId}.update")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('buckets.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('buckets.*.files.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('buckets.*.files.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.*.files.{$fileId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.*.files.{$fileId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}.files.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}.files.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}.files.{$fileId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}.files.{$fileId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertIsArray($webhook['data']['$permissions']); + $this->assertEquals($webhook['data']['name'], 'logo.png'); + $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['$createdAt'])); + $this->assertNotEmpty($webhook['data']['signature']); + $this->assertEquals($webhook['data']['mimeType'], 'image/png'); + $this->assertEquals($webhook['data']['sizeOriginal'], 47218); + } + + public function testDeleteBucketFile(): void + { + // Set up an enabled storage bucket and create a file + $data = $this->setupStorageBucket(); + $bucketId = $data['bucketId']; + $fileData = $this->setupBucketFile($bucketId); + $fileId = $fileData['fileId']; + + /** + * Test for SUCCESS + */ + $file = $this->client->call(Client::METHOD_DELETE, '/storage/buckets/' . $bucketId . '/files/' . $fileId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders())); + + $this->assertEquals(204, $file['headers']['status-code']); + $this->assertEmpty($file['body']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("buckets.{$bucketId}.files.{$fileId}.delete")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('buckets.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('buckets.*.files.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('buckets.*.files.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.*.files.{$fileId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.*.files.{$fileId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}.files.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}.files.*.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}.files.{$fileId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}.files.{$fileId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertIsArray($webhook['data']['$permissions']); + $this->assertEquals($webhook['data']['name'], 'logo.png'); + $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['$createdAt'])); + $this->assertNotEmpty($webhook['data']['signature']); + $this->assertEquals($webhook['data']['mimeType'], 'image/png'); + $this->assertEquals($webhook['data']['sizeOriginal'], 47218); + } + + public function testDeleteStorageBucket(): void + { + // Set up an enabled storage bucket + $data = $this->setupStorageBucket(); + $bucketId = $data['bucketId']; + + // Update bucket name before deleting to make test self-sufficient + // (In parallel execution, testUpdateStorageBucket may not have run) + $this->client->call(Client::METHOD_PUT, '/storage/buckets/' . $bucketId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'name' => 'Test Bucket Updated', + 'fileSecurity' => true, + ]); + + /** + * Test for SUCCESS + */ + $bucket = $this->client->call(Client::METHOD_DELETE, '/storage/buckets/' . $bucketId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ])); + + $this->assertEquals($bucket['headers']['status-code'], 204); + $this->assertEmpty($bucket['body']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("buckets.{$bucketId}.delete")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('buckets.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('buckets.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("buckets.{$bucketId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), true); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals('Test Bucket Updated', $webhook['data']['name']); + $this->assertEquals(true, $webhook['data']['enabled']); + $this->assertIsArray($webhook['data']['$permissions']); + } + + public function testCreateTeam(): void + { + /** + * Test for SUCCESS + */ + $team = $this->client->call(Client::METHOD_POST, '/teams', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'teamId' => ID::unique(), + 'name' => 'Arsenal' + ]); + + $teamId = $team['body']['$id']; + + $this->assertEquals(201, $team['headers']['status-code']); + $this->assertNotEmpty($team['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("teams.{$teamId}.create")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('teams.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('teams.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals('Arsenal', $webhook['data']['name']); + $this->assertGreaterThan(-1, $webhook['data']['total']); + $this->assertIsInt($webhook['data']['total']); + $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['$createdAt'])); + } + + public function testUpdateTeam(): void + { + // Set up a team + $data = $this->setupTeam(); + $teamId = $data['teamId']; + /** + * Test for SUCCESS + */ + $team = $this->client->call(Client::METHOD_PUT, '/teams/' . $teamId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'name' => 'Demo New' + ]); + + $this->assertEquals(200, $team['headers']['status-code']); + $this->assertNotEmpty($team['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("teams.{$teamId}.update")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('teams.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('teams.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals('Demo New', $webhook['data']['name']); + $this->assertGreaterThan(-1, $webhook['data']['total']); + $this->assertIsInt($webhook['data']['total']); + $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['$createdAt'])); + } + + public function testUpdateTeamPrefs(): void + { + // Set up a team + $data = $this->setupTeam(); + $id = $data['teamId']; + + $team = $this->client->call(Client::METHOD_PUT, '/teams/' . $id . '/prefs', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'prefs' => [ + 'prefKey1' => 'prefValue1', + 'prefKey2' => 'prefValue2', + ] + ]); + + $this->assertEquals($team['headers']['status-code'], 200); + $this->assertIsArray($team['body']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("teams.{$id}.update.prefs")); + $signatureKey = $this->getProject()['signatureKey']; + $payload = json_encode($webhook['data']); + $url = $webhook['url']; + $signatureExpected = base64_encode(hash_hmac('sha1', $url . $payload, $signatureKey, true)); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('teams.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('teams.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('teams.*.update.prefs', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$id}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$id}.update.prefs", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertEquals($webhook['data'], [ + 'prefKey1' => 'prefValue1', + 'prefKey2' => 'prefValue2', + ]); + } + + public function testDeleteTeam(): void + { + /** + * Test for SUCCESS + */ + $team = $this->client->call(Client::METHOD_POST, '/teams', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'teamId' => ID::unique(), + 'name' => 'Chelsea' + ]); + + $teamId = $team['body']['$id']; + + $this->assertEquals(201, $team['headers']['status-code']); + $this->assertNotEmpty($team['body']['$id']); + + $team = $this->client->call(Client::METHOD_DELETE, '/teams/' . $team['body']['$id'], array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders())); + + $webhook = $this->getLastRequest($this->webhookEventProbe("teams.{$teamId}.delete")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('teams.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('teams.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals('Chelsea', $webhook['data']['name']); + $this->assertGreaterThan(-1, $webhook['data']['total']); + $this->assertIsInt($webhook['data']['total']); + $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['$createdAt'])); + } + + public function testCreateTeamMembership(): void + { + // Set up a team + $data = $this->setupTeam(); + $teamId = $data['teamId']; + $email = uniqid() . 'friend@localhost.test'; + + // Create user to ensure team event is triggered after user event + $user = $this->client->call(Client::METHOD_POST, '/account', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'userId' => ID::unique(), + 'email' => $email, + 'password' => 'password', + 'name' => 'Friend User', + ]); + + /** + * Test for SUCCESS + */ + $team = $this->client->call(Client::METHOD_POST, '/teams/' . $teamId . '/memberships', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'email' => $email, + 'roles' => ['admin', 'editor'], + 'url' => 'http://localhost:5000/join-us#title' + ]); + + $this->assertEquals(201, $team['headers']['status-code']); + $this->assertNotEmpty($team['body']['$id']); + + $lastEmail = $this->getLastEmail(); + + // `$isAppUser` — no email expected; + $tokens = $this->extractQueryParamsFromEmailLink($lastEmail['html'] ?? ''); + + $secret = $tokens['secret'] ?? ''; + $membershipId = $team['body']['$id']; + + $webhook = $this->getLastRequest($this->webhookEventProbe("teams.{$teamId}.memberships.{$membershipId}.create")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('teams.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('teams.*.memberships.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('teams.*.memberships.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.*.memberships.{$membershipId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.*.memberships.{$membershipId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}.memberships.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}.memberships.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}.memberships.{$membershipId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}.memberships.{$membershipId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertNotEmpty($webhook['data']['userId']); + $this->assertNotEmpty($webhook['data']['teamId']); + $this->assertCount(2, $webhook['data']['roles']); + $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['invited'])); + $this->assertEquals(('server' === $this->getSide()), $webhook['data']['confirm']); + } + + public function testDeleteTeamMembership(): void + { + // Set up a team + $data = $this->setupTeam(); + $teamId = $data['teamId']; + $email = uniqid() . 'friend@localhost.test'; + + /** + * Test for SUCCESS + */ + $team = $this->client->call(Client::METHOD_POST, '/teams/' . $teamId . '/memberships', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'email' => $email, + 'name' => 'Friend User', + 'roles' => ['admin', 'editor'], + 'url' => 'http://localhost:5000/join-us#title' + ]); + + $membershipId = $team['body']['$id'] ?? ''; + + $this->assertEquals(201, $team['headers']['status-code']); + $this->assertNotEmpty($team['body']['$id']); + + $team = $this->client->call(Client::METHOD_DELETE, '/teams/' . $teamId . '/memberships/' . $team['body']['$id'], array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders())); + + $this->assertEquals(204, $team['headers']['status-code']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("teams.{$teamId}.memberships.{$membershipId}.delete")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertStringContainsString('teams.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('teams.*.memberships.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('teams.*.memberships.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.*.memberships.{$membershipId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.*.memberships.{$membershipId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}.memberships.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}.memberships.*.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}.memberships.{$membershipId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("teams.{$teamId}.memberships.{$membershipId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertNotEmpty($webhook['data']['userId']); + $this->assertNotEmpty($webhook['data']['teamId']); + $this->assertCount(2, $webhook['data']['roles']); + $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['invited'])); + $this->assertEquals(('server' === $this->getSide()), $webhook['data']['confirm']); + } + + public function testCreateWebhookWithPrivateDomain(): void + { + /** + * Test for FAILURE + */ + $projectId = $this->getProject()['$id']; + $webhook = $this->client->call(Client::METHOD_POST, '/projects/' . $projectId . '/webhooks', [ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'cookie' => 'a_session_console=' . $this->getRoot()['session'], + 'x-appwrite-project' => 'console', + 'X-Appwrite-Response-Format' => '1.8.0' + ], [ + 'name' => 'Webhook Test', + 'enabled' => true, + 'events' => [ + 'databases.*', + 'functions.*', + 'buckets.*', + 'teams.*', + 'users.*' + ], + 'url' => 'http://localhost/webhook', // private domains not allowed + 'security' => false, + ]); + + $this->assertEquals(400, $webhook['headers']['status-code']); + } + + public function testUpdateWebhookWithPrivateDomain(): void + { + /** + * Test for FAILURE + */ + $projectId = $this->getProject()['$id']; + $webhookId = $this->getProject()['webhookId']; + $webhook = $this->client->call(Client::METHOD_PUT, '/projects/' . $projectId . '/webhooks/' . $webhookId, [ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'cookie' => 'a_session_console=' . $this->getRoot()['session'], + 'x-appwrite-project' => 'console', + 'X-Appwrite-Response-Format' => '1.8.0' + ], [ + 'name' => 'Webhook Test', + 'enabled' => true, + 'events' => [ + 'databases.*', + 'functions.*', + 'buckets.*', + 'teams.*', + 'users.*' + ], + 'url' => 'http://localhost/webhook', // private domains not allowed + 'security' => false, + ]); + + $this->assertEquals(400, $webhook['headers']['status-code']); + } + + public function testWebhookAutoDisable(): void + { + $projectId = $this->getProject()['$id']; + $webhookId = $this->getProject()['webhookId']; + + // Create a database for this test + $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'databaseId' => ID::unique(), + 'name' => 'AutoDisable DB', + ]); + + $databaseId = $database['body']['$id']; + + $webhook = $this->client->call(Client::METHOD_PUT, '/projects/' . $projectId . '/webhooks/' . $webhookId, [ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'cookie' => 'a_session_console=' . $this->getRoot()['session'], + 'x-appwrite-project' => 'console', + 'X-Appwrite-Response-Format' => '1.8.0' + ], [ + 'name' => 'Webhook Test', + 'enabled' => true, + 'events' => [ + 'databases.*', + 'functions.*', + 'buckets.*', + 'teams.*', + 'users.*' + ], + 'url' => 'http://appwrite-non-existing-domain.com', // set non-existent URL + 'security' => false, + ]); + + $this->assertEquals(200, $webhook['headers']['status-code']); + $this->assertNotEmpty($webhook['body']); + + // trigger webhook for failure event 10 times + for ($i = 0; $i < 10; $i++) { + $newCollection = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'collectionId' => ID::unique(), + 'name' => 'newCollection' . $i, + 'permissions' => [ + Permission::read(Role::any()), + Permission::create(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + 'documentSecurity' => true, + ]); + + $this->assertEquals($newCollection['headers']['status-code'], 201); + $this->assertNotEmpty($newCollection['body']['$id']); + } + + $this->assertEventually(function () use ($projectId, $webhookId) { + $webhook = $this->client->call(Client::METHOD_GET, '/projects/' . $projectId . '/webhooks/' . $webhookId, array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'cookie' => 'a_session_console=' . $this->getRoot()['session'], + 'x-appwrite-project' => 'console', + 'X-Appwrite-Response-Format' => '1.8.0' + ])); + + // assert that the webhook is now disabled after 10 consecutive failures + $this->assertEquals($webhook['body']['enabled'], false); + $this->assertEquals($webhook['body']['attempts'], 10); + }, 15000, 500); + } +} diff --git a/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php b/tests/e2e/Services/ProjectWebhooks/WebhooksCustomClientTest.php similarity index 99% rename from tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php rename to tests/e2e/Services/ProjectWebhooks/WebhooksCustomClientTest.php index 7d01095a36..a6bda320a4 100644 --- a/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php +++ b/tests/e2e/Services/ProjectWebhooks/WebhooksCustomClientTest.php @@ -1,6 +1,6 @@ client->call(Client::METHOD_POST, '/users', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'userId' => ID::unique(), + 'email' => $email, + 'password' => $password, + 'name' => $name, + ]); + + return [ + 'userId' => $user['body']['$id'], + 'name' => $user['body']['name'], + 'email' => $user['body']['email'], + ]; + } + + /** + * Creates a function and returns function details. + * + * @return array Array containing 'functionId' + */ + protected function setupFunction(): array + { + $function = $this->client->call(Client::METHOD_POST, '/functions', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'functionId' => ID::unique(), + 'name' => 'Test', + 'execute' => [Role::any()->toString()], + 'runtime' => 'node-22', + 'entrypoint' => 'index.js', + 'timeout' => 10, + ]); + + return ['functionId' => $function['body']['$id']]; + } + + /** + * Creates a function deployment and waits for it to be built. + * + * @param string $functionId Function ID + * @return array Array containing 'functionId', 'deploymentId' + */ + protected function setupDeployment(string $functionId): array + { + $stderr = ''; + $stdout = ''; + $folder = 'timeout'; + $code = realpath(__DIR__ . '/../../../resources/functions') . "/{$folder}/code.tar.gz"; + Console::execute('cd ' . realpath(__DIR__ . "/../../../resources/functions") . "/{$folder} && tar --exclude code.tar.gz -czf code.tar.gz .", '', $stdout, $stderr); + + // Create variable first + $this->client->call(Client::METHOD_POST, '/functions/' . $functionId . '/variables', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'key' => 'key1', + 'value' => 'value1', + ]); + + $deployment = $this->client->call(Client::METHOD_POST, '/functions/' . $functionId . '/deployments', array_merge([ + 'content-type' => 'multipart/form-data', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'entrypoint' => 'index.js', + 'code' => new CURLFile($code, 'application/x-gzip', \basename($code)), + 'activate' => true + ]); + + $deploymentId = $deployment['body']['$id']; + + // Wait for deployment to be built + $this->awaitDeploymentIsBuilt($functionId, $deploymentId); + + return [ + 'functionId' => $functionId, + 'deploymentId' => $deploymentId, + ]; + } + + // Collection APIs + public function testUpdateCollection(): void + { + // Set up collection with attributes + $data = $this->setupCollectionWithAttributes(); + $id = $data['actorsId']; + $databaseId = $data['databaseId']; + + /** + * Test for SUCCESS + */ + $actors = $this->client->call(Client::METHOD_PUT, '/databases/' . $databaseId . '/collections/' . $id, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'name' => 'Actors1', + 'documentSecurity' => true, + ]); + + $this->assertEquals(200, $actors['headers']['status-code']); + $this->assertNotEmpty($actors['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$id}.update")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$id}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertTrue(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? '')); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals('Actors1', $webhook['data']['name']); + $this->assertIsArray($webhook['data']['$permissions']); + $this->assertCount(4, $webhook['data']['$permissions']); + } + + public function testCreateDeleteIndexes(): void + { + // Set up collection with attributes + $data = $this->setupCollectionWithAttributes(); + $actorsId = $data['actorsId']; + $databaseId = $data['databaseId']; + + $index = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/indexes', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'fullname', + 'type' => 'key', + 'attributes' => ['lastName', 'firstName'], + 'orders' => ['ASC', 'ASC'], + ]); + + $this->assertEquals(202, $index['headers']['status-code']); + $this->assertEquals('fullname', $index['body']['key']); + + // wait for database worker to create index + $this->assertEventually(function () use ($databaseId, $actorsId) { + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.indexes.*.create")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.indexes.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.indexes.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.indexes.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.indexes.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertTrue(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? '')); + }, 10000, 500); + + // Remove index + $this->client->call(Client::METHOD_DELETE, '/databases/' . $databaseId . '/collections/' . $actorsId . '/indexes/' . $index['body']['key'], array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ])); + + // // wait for database worker to remove index + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.indexes.*.update")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + // $this->assertEquals($webhook['method'], 'DELETE'); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.indexes.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.indexes.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.indexes.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.indexes.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertTrue(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? '')); + } + + public function testDeleteCollection(): void + { + /** + * Create database + */ + $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ], $this->getHeaders()), [ + 'databaseId' => ID::unique(), + 'name' => 'Actors DB', + ]); + + $databaseId = $database['body']['$id']; + + /** + * Test for SUCCESS + */ + $actors = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'collectionId' => ID::unique(), + 'name' => 'Demo', + 'permissions' => [ + Permission::read(Role::any()), + Permission::create(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + 'documentSecurity' => true, + ]); + + $id = $actors['body']['$id']; + + $this->assertEquals(201, $actors['headers']['status-code']); + $this->assertNotEmpty($actors['body']['$id']); + + $actors = $this->client->call(Client::METHOD_DELETE, '/databases/' . $databaseId . '/collections/' . $actors['body']['$id'], array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), []); + + $this->assertEquals(204, $actors['headers']['status-code']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$id}.delete")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.collections.{$id}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertTrue(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? '')); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals('Demo', $webhook['data']['name']); + $this->assertIsArray($webhook['data']['$permissions']); + $this->assertCount(4, $webhook['data']['$permissions']); + } + + // Table APIs + public function testUpdateTable(): void + { + // Set up table with columns + $data = $this->setupTableWithColumns(); + $id = $data['actorsId']; + $databaseId = $data['databaseId']; + + /** + * Test for SUCCESS + */ + $actors = $this->client->call(Client::METHOD_PUT, '/tablesdb/' . $databaseId . '/tables/' . $id, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'name' => 'Actors1', + 'rowSecurity' => true, + ]); + + $this->assertEquals(200, $actors['headers']['status-code']); + $this->assertNotEmpty($actors['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$id}.update")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$id}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEmpty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals('Actors1', $webhook['data']['name']); + $this->assertIsArray($webhook['data']['$permissions']); + $this->assertCount(4, $webhook['data']['$permissions']); + } + + public function testCreateDeleteColumnIndexes(): void + { + // Set up table with columns + $data = $this->setupTableWithColumns(); + $actorsId = $data['actorsId']; + $databaseId = $data['databaseId']; + + $index = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/indexes', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'fullname', + 'type' => 'key', + 'columns' => ['lastName', 'firstName'], + 'orders' => ['ASC', 'ASC'], + ]); + + $this->assertEquals(202, $index['headers']['status-code']); + $this->assertEquals('fullname', $index['body']['key']); + + // wait for database worker to create index + $this->assertEventually(function () use ($databaseId, $actorsId) { + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.indexes.*.create")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.indexes.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.indexes.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.indexes.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.indexes.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertTrue(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? '')); + }, 10000, 500); + + // Remove index + $this->client->call(Client::METHOD_DELETE, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/indexes/' . $index['body']['key'], array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ])); + + // // wait for database worker to remove index + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.indexes.*.update")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + // $this->assertEquals($webhook['method'], 'DELETE'); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.indexes.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.indexes.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.indexes.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.indexes.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertTrue(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? '')); + } + + public function testDeleteTable(): void + { + /** + * Create database + */ + $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ], $this->getHeaders()), [ + 'databaseId' => ID::unique(), + 'name' => 'Actors DB', + ]); + + $databaseId = $database['body']['$id']; + + /** + * Test for SUCCESS + */ + $actors = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'tableId' => ID::unique(), + 'name' => 'Demo', + 'permissions' => [ + Permission::read(Role::any()), + Permission::create(Role::any()), + Permission::update(Role::any()), + Permission::delete(Role::any()), + ], + 'rowSecurity' => true, + ]); + + $id = $actors['body']['$id']; + + $this->assertEquals(201, $actors['headers']['status-code']); + $this->assertNotEmpty($actors['body']['$id']); + + $actors = $this->client->call(Client::METHOD_DELETE, '/tablesdb/' . $databaseId . '/tables/' . $actors['body']['$id'], array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ])); + + $this->assertEquals(204, $actors['headers']['status-code']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$id}.delete")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("databases.{$databaseId}.tables.{$id}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEmpty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals('Demo', $webhook['data']['name']); + $this->assertIsArray($webhook['data']['$permissions']); + $this->assertCount(4, $webhook['data']['$permissions']); + } + + public function testCreateUser(): void + { + $email = uniqid() . 'user@localhost.test'; + $password = 'password'; + $name = 'User Name'; + + /** + * Test for SUCCESS + */ + $user = $this->client->call(Client::METHOD_POST, '/users', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'userId' => ID::unique(), + 'email' => $email, + 'password' => $password, + 'name' => $name, + ]); + + $this->assertEquals(201, $user['headers']['status-code']); + $this->assertNotEmpty($user['body']['$id']); + + $id = $user['body']['$id']; + + $webhook = $this->getLastRequest($this->webhookEventProbe("users.{$id}.create")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + $this->assertStringContainsString('users.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('users.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("users.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("users.{$id}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals($webhook['data']['name'], $name); + $this->assertTrue((new DatetimeValidator())->isValid($webhook['data']['registration'])); + $this->assertTrue($webhook['data']['status']); + $this->assertEquals($webhook['data']['email'], $email); + $this->assertFalse($webhook['data']['emailVerification']); + $this->assertEquals([], $webhook['data']['prefs']); + } + + public function testUpdateUserPrefs(): void + { + // Set up a user + $data = $this->setupUser(); + $id = $data['userId']; + + /** + * Test for SUCCESS + */ + $user = $this->client->call(Client::METHOD_PATCH, '/users/' . $id . '/prefs', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'prefs' => ['a' => 'b'] + ]); + + $this->assertEquals(200, $user['headers']['status-code']); + $this->assertEquals('b', $user['body']['a']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("users.{$id}.update.prefs")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + $this->assertStringContainsString('users.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('users.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('users.*.update.prefs', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("users.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("users.{$id}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("users.{$id}.update.prefs", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertEquals('b', $webhook['data']['a']); + } + + public function testUpdateUserStatus(): void + { + // Set up a user + $data = $this->setupUser(); + $id = $data['userId']; + + /** + * Test for SUCCESS + */ + $user = $this->client->call(Client::METHOD_PATCH, '/users/' . $data['userId'] . '/status', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'status' => false, + ]); + + $this->assertEquals(200, $user['headers']['status-code']); + $this->assertNotEmpty($user['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("users.{$id}.update.status")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + $this->assertStringContainsString('users.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('users.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('users.*.update.status', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("users.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("users.{$id}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("users.{$id}.update.status", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals($webhook['data']['name'], $data['name']); + $this->assertTrue((new DatetimeValidator())->isValid($webhook['data']['registration'])); + $this->assertFalse($webhook['data']['status']); + $this->assertEquals($webhook['data']['email'], $data['email']); + $this->assertFalse($webhook['data']['emailVerification']); + } + + public function testDeleteUser(): void + { + // Set up a user + $data = $this->setupUser(); + $id = $data['userId']; + + /** + * Test for SUCCESS + */ + $user = $this->client->call(Client::METHOD_DELETE, '/users/' . $data['userId'], array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders())); + + $this->assertEquals(204, $user['headers']['status-code']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("users.{$id}.delete")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + $this->assertStringContainsString('users.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString('users.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("users.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertStringContainsString("users.{$id}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals($webhook['data']['name'], $data['name']); + $this->assertTrue((new DatetimeValidator())->isValid($webhook['data']['registration'])); + // User is created with status=true by default, so webhook shows that status at deletion + $this->assertTrue($webhook['data']['status']); + $this->assertEquals($webhook['data']['email'], $data['email']); + $this->assertFalse($webhook['data']['emailVerification']); + } + + public function testCreateFunction(): void + { + /** + * Test for SUCCESS + */ + $function = $this->client->call(Client::METHOD_POST, '/functions', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'functionId' => ID::unique(), + 'name' => 'Test', + 'execute' => [Role::any()->toString()], + 'runtime' => 'node-22', + 'entrypoint' => 'index.js', + 'timeout' => 10, + ]); + + $id = $function['body']['$id'] ?? ''; + + $this->assertEquals(201, $function['headers']['status-code']); + $this->assertNotEmpty($function['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$id}.create")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + } + + public function testUpdateFunction(): void + { + // Set up a function + $data = $this->setupFunction(); + $id = $data['functionId']; + + /** + * Test for SUCCESS + */ + $function = $this->client->call(Client::METHOD_PUT, '/functions/' . $id, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'name' => 'Test', + 'runtime' => 'node-22', + 'entrypoint' => 'index.js', + 'execute' => [Role::any()->toString()], + 'vars' => [ + 'key1' => 'value1', + ] + ]); + + $this->assertEquals(200, $function['headers']['status-code']); + $this->assertEquals($function['body']['$id'], $id); + + // Create variable + $variable = $this->client->call(Client::METHOD_POST, '/functions/' . $id . '/variables', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'key' => 'key1', + 'value' => 'value1', + ]); + + $this->assertEquals(201, $variable['headers']['status-code']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$id}.update")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + // $this->assertStringContainsString('functions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString('functions.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); TODO @christyjacob4 : enable test once we allow functions.* events + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + } + + public function testCreateDeployment(): void + { + // Set up a function + $data = $this->setupFunction(); + $functionId = $data['functionId']; + + /** + * Test for SUCCESS + */ + $stderr = ''; + $stdout = ''; + $folder = 'timeout'; + $code = realpath(__DIR__ . '/../../../resources/functions') . "/{$folder}/code.tar.gz"; + Console::execute('cd ' . realpath(__DIR__ . "/../../../resources/functions") . "/{$folder} && tar --exclude code.tar.gz -czf code.tar.gz .", '', $stdout, $stderr); + + $deployment = $this->client->call(Client::METHOD_POST, '/functions/' . $functionId . '/deployments', array_merge([ + 'content-type' => 'multipart/form-data', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'entrypoint' => 'index.js', + 'code' => new CURLFile($code, 'application/x-gzip', \basename($code)), + 'activate' => true + ]); + + $deploymentId = $deployment['body']['$id'] ?? ''; + + $this->assertEquals(202, $deployment['headers']['status-code']); + $this->assertNotEmpty($deployment['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$functionId}.deployments.{$deploymentId}.create")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + // $this->assertStringContainsString('functions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString('functions.*.deployments.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.*.deployments.{$deploymentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.deployments.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.deployments.{$deploymentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); TODO @christyjacob4 : enable test once we allow functions.* events + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + + $this->awaitDeploymentIsBuilt($functionId, $deploymentId); + } + + public function testUpdateDeployment(): void + { + // Set up a function with deployment + $data = $this->setupFunction(); + $deploymentData = $this->setupDeployment($data['functionId']); + $id = $deploymentData['functionId']; + $deploymentId = $deploymentData['deploymentId']; + + /** + * Test for SUCCESS + */ + $response = $this->client->call(Client::METHOD_PATCH, '/functions/' . $id . '/deployments/' . $deploymentId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), []); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertNotEmpty($response['body']['$id']); + + // Wait for deployment to be built. + $this->assertEventually(function () use ($deploymentId, $id) { + $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$id}.deployments.{$deploymentId}.update")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + // $this->assertStringContainsString('functions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString('functions.*.deployments.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString('functions.*.deployments.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.*.deployments.{$deploymentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.*.deployments.{$deploymentId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.deployments.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.deployments.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.deployments.{$deploymentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.deployments.{$deploymentId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); TODO @christyjacob4 : enable test once we allow functions.* events + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + }, 10000, 500); + + } + + public function testExecutions(): void + { + // Set up a function with deployment + $data = $this->setupFunction(); + $deploymentData = $this->setupDeployment($data['functionId']); + $id = $deploymentData['functionId']; + + /** + * Test for SUCCESS + */ + $execution = $this->client->call(Client::METHOD_POST, '/functions/' . $id . '/executions', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'async' => true + ]); + + $executionId = $execution['body']['$id'] ?? ''; + + $this->assertEquals(202, $execution['headers']['status-code']); + $this->assertNotEmpty($execution['body']['$id']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$id}.executions.{$executionId}.create")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + // $this->assertStringContainsString('functions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString('functions.*.executions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString('functions.*.executions.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.*.executions.{$executionId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.*.executions.{$executionId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.executions.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.executions.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.executions.{$executionId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.executions.{$executionId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); TODO @christyjacob4 : enable test once we allow functions.* events + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + + // wait for timeout function to complete + $this->assertEventually(function () use ($executionId, $id) { + $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$id}.executions.{$executionId}.update")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + // $this->assertStringContainsString('functions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString('functions.*.executions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString('functions.*.executions.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.*.executions.{$executionId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.*.executions.{$executionId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.executions.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.executions.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.executions.{$executionId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.executions.{$executionId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); TODO @christyjacob4 : enable test once we allow functions.* events + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + }, 30000, 500); + } + + public function testDeleteDeployment(): void + { + // Set up a function with deployment + $data = $this->setupFunction(); + $deploymentData = $this->setupDeployment($data['functionId']); + $id = $deploymentData['functionId']; + $deploymentId = $deploymentData['deploymentId']; + /** + * Test for SUCCESS + */ + $deployment = $this->client->call(Client::METHOD_DELETE, '/functions/' . $id . '/deployments/' . $deploymentId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders())); + + $this->assertEquals(204, $deployment['headers']['status-code']); + $this->assertEmpty($deployment['body']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$id}.deployments.{$deploymentId}.delete")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + // $this->assertStringContainsString('functions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString('functions.*.deployments.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString('functions.*.deployments.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.*.deployments.{$deploymentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.*.deployments.{$deploymentId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.deployments.*", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.deployments.*.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.deployments.{$deploymentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.deployments.{$deploymentId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); TODO @christyjacob4 : enable test once we allow functions.* events + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + } + + public function testDeleteFunction(): void + { + // Set up a function + $data = $this->setupFunction(); + $id = $data['functionId']; + + /** + * Test for SUCCESS + */ + $function = $this->client->call(Client::METHOD_DELETE, '/functions/' . $id, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders())); + + $this->assertEquals(204, $function['headers']['status-code']); + $this->assertEmpty($function['body']); + + $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$id}.delete")); + $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + + $this->assertEquals('POST', $webhook['method']); + $this->assertEquals('application/json', $webhook['headers']['Content-Type']); + $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); + // $this->assertStringContainsString('functions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString('functions.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); + // $this->assertStringContainsString("functions.{$id}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); TODO @christyjacob4 : enable test once we allow functions.* events + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + } +} diff --git a/tests/e2e/Services/Projects/ProjectsBase.php b/tests/e2e/Services/Projects/ProjectsBase.php index dc31b7aa85..231ec302de 100644 --- a/tests/e2e/Services/Projects/ProjectsBase.php +++ b/tests/e2e/Services/Projects/ProjectsBase.php @@ -81,10 +81,12 @@ trait ProjectsBase $projectData = $this->setupProjectData(); $id = $projectData['projectId']; - $response = $this->client->call(Client::METHOD_POST, '/projects/' . $id . '/webhooks', array_merge([ + $response = $this->client->call(Client::METHOD_POST, '/webhooks', array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin', ], $this->getHeaders()), [ + 'webhookId' => 'unique()', 'name' => 'Webhook Test', 'events' => ['users.*.create', 'users.*.update.email'], 'url' => 'https://appwrite.io', diff --git a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php index d059f1cf50..5d9722884d 100644 --- a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php +++ b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php @@ -2746,10 +2746,12 @@ class ProjectsConsoleClientTest extends Scope $data = $this->setupProjectData(); $id = $data['projectId']; - $response = $this->client->call(Client::METHOD_POST, '/projects/' . $id . '/webhooks', array_merge([ + $response = $this->client->call(Client::METHOD_POST, '/webhooks', array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), [ + 'webhookId' => 'unique()', 'name' => 'Webhook Test', 'events' => ['users.*.create', 'users.*.update.email'], 'url' => 'https://appwrite.io', @@ -2771,10 +2773,12 @@ class ProjectsConsoleClientTest extends Scope /** * Test for FAILURE */ - $response = $this->client->call(Client::METHOD_POST, '/projects/' . $id . '/webhooks', array_merge([ + $response = $this->client->call(Client::METHOD_POST, '/webhooks', array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), [ + 'webhookId' => 'unique()', 'name' => 'Webhook Test', 'events' => ['account.unknown', 'users.*.update.email'], 'url' => 'https://appwrite.io', @@ -2785,10 +2789,12 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals(400, $response['headers']['status-code']); - $response = $this->client->call(Client::METHOD_POST, '/projects/' . $id . '/webhooks', array_merge([ + $response = $this->client->call(Client::METHOD_POST, '/webhooks', array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), [ + 'webhookId' => 'unique()', 'name' => 'Webhook Test', 'events' => ['users.*.create', 'users.*.update.email'], 'url' => 'invalid://appwrite.io', @@ -2802,9 +2808,10 @@ class ProjectsConsoleClientTest extends Scope $data = $this->setupProjectWithWebhook(); $id = $data['projectId']; - $response = $this->client->call(Client::METHOD_GET, '/projects/' . $id . '/webhooks', array_merge([ + $response = $this->client->call(Client::METHOD_GET, '/webhooks', array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); @@ -2822,9 +2829,10 @@ class ProjectsConsoleClientTest extends Scope $id = $data['projectId']; $webhookId = $data['webhookId']; - $response = $this->client->call(Client::METHOD_GET, '/projects/' . $id . '/webhooks/' . $webhookId, array_merge([ + $response = $this->client->call(Client::METHOD_GET, '/webhooks/' . $webhookId, array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); @@ -2840,9 +2848,10 @@ class ProjectsConsoleClientTest extends Scope /** * Test for FAILURE */ - $response = $this->client->call(Client::METHOD_GET, '/projects/' . $id . '/webhooks/error', array_merge([ + $response = $this->client->call(Client::METHOD_GET, '/webhooks/error', array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), []); $this->assertEquals(404, $response['headers']['status-code']); @@ -2854,9 +2863,10 @@ class ProjectsConsoleClientTest extends Scope $id = $data['projectId']; $webhookId = $data['webhookId']; - $response = $this->client->call(Client::METHOD_PUT, '/projects/' . $id . '/webhooks/' . $webhookId, array_merge([ + $response = $this->client->call(Client::METHOD_PUT, '/webhooks/' . $webhookId, array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), [ 'name' => 'Webhook Test Update', 'events' => ['users.*.delete', 'users.*.sessions.*.delete', 'buckets.*.files.*.create'], @@ -2878,9 +2888,10 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals('', $response['body']['httpUser']); $this->assertEquals('', $response['body']['httpPass']); - $response = $this->client->call(Client::METHOD_GET, '/projects/' . $id . '/webhooks/' . $webhookId, array_merge([ + $response = $this->client->call(Client::METHOD_GET, '/webhooks/' . $webhookId, array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); @@ -2900,9 +2911,10 @@ class ProjectsConsoleClientTest extends Scope /** * Test for FAILURE */ - $response = $this->client->call(Client::METHOD_PUT, '/projects/' . $id . '/webhooks/' . $webhookId, array_merge([ + $response = $this->client->call(Client::METHOD_PUT, '/webhooks/' . $webhookId, array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), [ 'name' => 'Webhook Test Update', 'events' => ['users.*.delete', 'users.*.sessions.*.delete', 'buckets.*.files.*.unknown'], @@ -2912,9 +2924,10 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals(400, $response['headers']['status-code']); - $response = $this->client->call(Client::METHOD_PUT, '/projects/' . $id . '/webhooks/' . $webhookId, array_merge([ + $response = $this->client->call(Client::METHOD_PUT, '/webhooks/' . $webhookId, array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), [ 'name' => 'Webhook Test Update', 'events' => ['users.*.delete', 'users.*.sessions.*.delete', 'buckets.*.files.*.create'], @@ -2924,9 +2937,10 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals(400, $response['headers']['status-code']); - $response = $this->client->call(Client::METHOD_PUT, '/projects/' . $id . '/webhooks/' . $webhookId, array_merge([ + $response = $this->client->call(Client::METHOD_PUT, '/webhooks/' . $webhookId, array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), [ 'name' => 'Webhook Test Update', 'events' => ['users.*.delete', 'users.*.sessions.*.delete', 'buckets.*.files.*.create'], @@ -2943,9 +2957,10 @@ class ProjectsConsoleClientTest extends Scope $webhookId = $data['webhookId']; $signatureKey = $data['signatureKey']; - $response = $this->client->call(Client::METHOD_PATCH, '/projects/' . $id . '/webhooks/' . $webhookId . '/signature', array_merge([ + $response = $this->client->call(Client::METHOD_PATCH, '/webhooks/' . $webhookId . '/signature', array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders())); $this->assertEquals(200, $response['headers']['status-code']); @@ -2960,10 +2975,12 @@ class ProjectsConsoleClientTest extends Scope $id = $projectData['projectId']; // Create a webhook to delete - $response = $this->client->call(Client::METHOD_POST, '/projects/' . $id . '/webhooks', array_merge([ + $response = $this->client->call(Client::METHOD_POST, '/webhooks', array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), [ + 'webhookId' => 'unique()', 'name' => 'Webhook To Delete', 'events' => ['users.*.create'], 'url' => 'https://appwrite.io', @@ -2975,17 +2992,19 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals(201, $response['headers']['status-code']); $webhookId = $response['body']['$id']; - $response = $this->client->call(Client::METHOD_DELETE, '/projects/' . $id . '/webhooks/' . $webhookId, array_merge([ + $response = $this->client->call(Client::METHOD_DELETE, '/webhooks/' . $webhookId, array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), []); $this->assertEquals(204, $response['headers']['status-code']); $this->assertEmpty($response['body']); - $response = $this->client->call(Client::METHOD_GET, '/projects/' . $id . '/webhooks/' . $webhookId, array_merge([ + $response = $this->client->call(Client::METHOD_GET, '/webhooks/' . $webhookId, array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), []); $this->assertEquals(404, $response['headers']['status-code']); @@ -2993,9 +3012,10 @@ class ProjectsConsoleClientTest extends Scope /** * Test for FAILURE */ - $response = $this->client->call(Client::METHOD_DELETE, '/projects/' . $id . '/webhooks/error', array_merge([ + $response = $this->client->call(Client::METHOD_DELETE, '/webhooks/error', array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), []); $this->assertEquals(404, $response['headers']['status-code']); @@ -4353,9 +4373,10 @@ class ProjectsConsoleClientTest extends Scope /** * Test for FAILURE */ - $response = $this->client->call(Client::METHOD_DELETE, '/projects/' . $id . '/webhooks/error', array_merge([ + $response = $this->client->call(Client::METHOD_DELETE, '/webhooks/error', array_merge([ 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin' ], $this->getHeaders()), []); $this->assertEquals(404, $response['headers']['status-code']); diff --git a/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php b/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php index c5fb71fcb6..d1d7d0d054 100644 --- a/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php +++ b/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php @@ -2289,7 +2289,7 @@ class RealtimeCustomClientTest extends Scope ]); $this->assertEquals('ready', $deployment['body']['status'], \json_encode($deployment['body'])); - }); + }, 240_000, 500); $response = $this->client->call(Client::METHOD_PATCH, '/functions/' . $functionId . '/deployments/' . $deploymentId, array_merge([ 'content-type' => 'application/json', @@ -3743,7 +3743,51 @@ class RealtimeCustomClientTest extends Scope $session = $user['session'] ?? ''; $projectId = $this->getProject()['$id']; - Coroutine\run(function () use ($session, $projectId) { + // Setup DB/collection/attribute outside coroutine to avoid fatal errors on assertion failure + $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $projectId, + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'databaseId' => ID::unique(), + 'name' => 'Concurrent DB', + ]); + $databaseId = $database['body']['$id']; + + $collection = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $projectId, + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'collectionId' => ID::unique(), + 'name' => 'Concurrent Collection', + 'permissions' => [ + Permission::create(Role::user($this->getUser()['$id'])), + ], + 'documentSecurity' => true, + ]); + $collectionId = $collection['body']['$id']; + + $this->client->call(Client::METHOD_POST, "/databases/{$databaseId}/collections/{$collectionId}/attributes/string", array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $projectId, + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'key' => 'name', + 'size' => 64, + 'required' => true, + ]); + + $this->assertEventually(function () use ($databaseId, $collectionId) { + $response = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $collectionId . '/attributes/name', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'], + ])); + $this->assertEquals('available', $response['body']['status'] ?? null); + }, 30000, 250); + + Coroutine\run(function () use ($session, $projectId, $databaseId, $collectionId) { $headers = [ 'origin' => 'http://localhost', 'cookie' => 'a_session_' . $projectId . '=' . $session @@ -3760,50 +3804,6 @@ class RealtimeCustomClientTest extends Scope $this->assertEquals('connected', $response['type']); } - // Setup DB/collection/attribute - $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $projectId, - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'databaseId' => ID::unique(), - 'name' => 'Concurrent DB', - ]); - $databaseId = $database['body']['$id']; - - $collection = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $projectId, - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'collectionId' => ID::unique(), - 'name' => 'Concurrent Collection', - 'permissions' => [ - Permission::create(Role::user($this->getUser()['$id'])), - ], - 'documentSecurity' => true, - ]); - $collectionId = $collection['body']['$id']; - - $this->client->call(Client::METHOD_POST, "/databases/{$databaseId}/collections/{$collectionId}/attributes/string", array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $projectId, - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'key' => 'name', - 'size' => 64, - 'required' => true, - ]); - - $this->assertEventually(function () use ($databaseId, $collectionId) { - $response = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $collectionId . '/attributes/name', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'], - ])); - $this->assertEquals('available', $response['body']['status']); - }, 30000, 250); - $creates = [ ['name' => 'Doc A'], ['name' => 'Doc B'], diff --git a/tests/e2e/Services/Sites/SitesCustomServerTest.php b/tests/e2e/Services/Sites/SitesCustomServerTest.php index 823bd481a8..69dbd7fdf0 100644 --- a/tests/e2e/Services/Sites/SitesCustomServerTest.php +++ b/tests/e2e/Services/Sites/SitesCustomServerTest.php @@ -1439,6 +1439,71 @@ class SitesCustomServerTest extends Scope $this->assertEquals(404, $function['headers']['status-code']); } + public function testDeleteSiteRulesCleanup(): void + { + $siteId = $this->setupSite([ + 'siteId' => ID::unique(), + 'name' => 'Test Rules Cleanup Site', + 'framework' => 'other', + 'buildRuntime' => 'node-22', + 'outputDirectory' => './', + 'fallbackFile' => '', + ]); + + $this->assertNotEmpty($siteId); + + // Create a manual deployment rule (type = 'deployment') + $domain = $this->setupSiteDomain($siteId); + $this->assertNotEmpty($domain); + + // Create a redirect rule (type = 'redirect') + $redirectDomain = \uniqid() . '-redirect-cleanup.custom.localhost'; + $redirectRule = $this->client->call(Client::METHOD_POST, '/proxy/rules/redirect', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'domain' => $redirectDomain, + 'url' => 'https://appwrite.io', + 'statusCode' => 301, + 'resourceType' => 'site', + 'resourceId' => $siteId, + ]); + + $this->assertEquals(201, $redirectRule['headers']['status-code']); + $this->assertNotEmpty($redirectRule['body']['$id']); + + // Verify both rules exist (no type filter — catches all rule types) + $rules = $this->client->call(Client::METHOD_GET, '/proxy/rules', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [ + Query::equal('deploymentResourceId', [$siteId])->toString() + ] + ]); + + $this->assertEquals(200, $rules['headers']['status-code']); + $this->assertGreaterThanOrEqual(2, $rules['body']['total']); + + // Delete the site + $this->cleanupSite($siteId); + + // Verify ALL rules (deployment + redirect) are cleaned up + $this->assertEventually(function () use ($siteId) { + $rules = $this->client->call(Client::METHOD_GET, '/proxy/rules', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => [ + Query::equal('deploymentResourceId', [$siteId])->toString() + ] + ]); + + $this->assertEquals(200, $rules['headers']['status-code']); + $this->assertEquals(0, $rules['body']['total']); + }, 5000, 500); + } + public function testGetFrameworks(): void { $frameworks = $this->client->call(Client::METHOD_GET, '/sites/frameworks', array_merge([ diff --git a/tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php b/tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php index ca6248a228..8c000d99b3 100644 --- a/tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php +++ b/tests/e2e/Services/TablesDB/Permissions/TablesDBPermissionsTeamTest.php @@ -23,7 +23,7 @@ class TablesDBPermissionsTeamTest extends Scope use SchemaPolling; public array $collections = []; - public string $databaseId = 'testpermissiondb'; + public string $databaseId = 'testpermdb_tablesdb'; public function createTeams(): array { diff --git a/tests/e2e/Services/Webhooks/WebhooksBase.php b/tests/e2e/Services/Webhooks/WebhooksBase.php index 84748f98a5..7ad701b564 100644 --- a/tests/e2e/Services/Webhooks/WebhooksBase.php +++ b/tests/e2e/Services/Webhooks/WebhooksBase.php @@ -3,1832 +3,1610 @@ namespace Tests\E2E\Services\Webhooks; use Appwrite\Tests\Async; -use Appwrite\Tests\Retry; -use CURLFile; use Tests\E2E\Client; +use Utopia\Database\Document; use Utopia\Database\Helpers\ID; -use Utopia\Database\Helpers\Permission; -use Utopia\Database\Helpers\Role; +use Utopia\Database\Query; use Utopia\Database\Validator\Datetime as DatetimeValidator; trait WebhooksBase { use Async; - protected function awaitDeploymentIsBuilt($functionId, $deploymentId): void - { - $this->assertEventually(function () use ($functionId, $deploymentId) { - $deployment = $this->client->call(Client::METHOD_GET, '/functions/' . $functionId . '/deployments/' . $deploymentId, [ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'], - ]); + // Tests for all auth scenarios - $this->assertEquals(200, $deployment['headers']['status-code']); - $this->assertEquals('ready', $deployment['body']['status'], \json_encode($deployment['body'])); - }, 120000, 500); + public function testCreateWebhook(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Test Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $this->assertNotEmpty($webhook['body']['$id']); + $this->assertEquals('Test Webhook', $webhook['body']['name']); + $this->assertEquals('https://appwrite.io', $webhook['body']['url']); + $this->assertContains('users.*.create', $webhook['body']['events']); + $this->assertCount(1, $webhook['body']['events']); + $this->assertEquals(true, $webhook['body']['enabled']); + $this->assertEquals(false, $webhook['body']['security']); + $this->assertEquals('', $webhook['body']['httpUser']); + $this->assertEquals('', $webhook['body']['httpPass']); + $this->assertNotEmpty($webhook['body']['signatureKey']); + $this->assertEquals(128, \strlen($webhook['body']['signatureKey'])); + $this->assertEquals(0, $webhook['body']['attempts']); + $this->assertEquals('', $webhook['body']['logs']); + + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['body']['$createdAt'])); + $this->assertEquals(true, $dateValidator->isValid($webhook['body']['$updatedAt'])); + + // Verify via GET + $get = $this->getWebhook($webhook['body']['$id']); + $this->assertEquals(200, $get['headers']['status-code']); + $this->assertEquals($webhook['body']['$id'], $get['body']['$id']); + $this->assertEquals('Test Webhook', $get['body']['name']); + + // Verify via LIST + $list = $this->listWebhooks(null, true); + $this->assertEquals(200, $list['headers']['status-code']); + $this->assertGreaterThanOrEqual(1, $list['body']['total']); + $this->assertGreaterThanOrEqual(1, \count($list['body']['webhooks'])); + + // Cleanup + $this->deleteWebhook($webhook['body']['$id']); } - /** - * Create a probe callback that filters webhooks by event pattern. - */ - private function webhookEventProbe(string $eventPattern): callable + public function testCreateWebhookWithSecurity(): void { - return function (array $request) use ($eventPattern) { - $this->assertStringContainsString( - $eventPattern, - $request['headers']['X-Appwrite-Webhook-Events'] ?? '' - ); - }; + $webhook = $this->createWebhook( + ID::unique(), + 'Webhook With Security', + ['users.*.create'], + null, + 'https://appwrite.io', + true, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $this->assertNotEmpty($webhook['body']['$id']); + $this->assertEquals(true, $webhook['body']['security']); + $this->assertIsBool($webhook['body']['security']); + + // Cleanup + $this->deleteWebhook($webhook['body']['$id']); } - public static function getWebhookSignature(array $webhook, string $signatureKey): string + public function testCreateWebhookWithHttpAuth(): void { - $payload = json_encode($webhook['data']); - $url = $webhook['url']; - return base64_encode(hash_hmac('sha1', $url . $payload, $signatureKey, true)); + $webhook = $this->createWebhook( + ID::unique(), + 'Webhook With HTTP Auth', + ['users.*.create'], + null, + 'https://appwrite.io', + true, + 'username', + 'password' + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $this->assertNotEmpty($webhook['body']['$id']); + $this->assertEquals('username', $webhook['body']['httpUser']); + $this->assertEquals('password', $webhook['body']['httpPass']); + $this->assertEquals(true, $webhook['body']['security']); + + // Verify via GET + $get = $this->getWebhook($webhook['body']['$id']); + $this->assertEquals(200, $get['headers']['status-code']); + $this->assertEquals('username', $get['body']['httpUser']); + + // Cleanup + $this->deleteWebhook($webhook['body']['$id']); } - /** - * Creates a database and collection with proper attributes for document operations. - * - * @return array Array containing 'databaseId' and 'actorsId' - */ - protected function setupCollectionWithAttributes(): array + public function testCreateWebhookEnabled(): void { - // Create database - $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'databaseId' => ID::unique(), - 'name' => 'Actors DB', - ]); + // Create disabled webhook + $webhook = $this->createWebhook( + ID::unique(), + 'Disabled Webhook', + ['users.*.create'], + false, + 'https://appwrite.io', + null, + null, + null + ); - $databaseId = $database['body']['$id']; + $this->assertEquals(201, $webhook['headers']['status-code']); + $this->assertEquals(false, $webhook['body']['enabled']); + $this->assertIsBool($webhook['body']['enabled']); - // Create collection - $actors = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'collectionId' => ID::unique(), - 'name' => 'Actors', - 'permissions' => [ - Permission::read(Role::any()), - Permission::create(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - 'documentSecurity' => true, - ]); + // Cleanup + $this->deleteWebhook($webhook['body']['$id']); - $actorsId = $actors['body']['$id']; + // Create enabled webhook explicitly + $webhook = $this->createWebhook( + ID::unique(), + 'Enabled Webhook', + ['users.*.create'], + true, + 'https://appwrite.io', + null, + null, + null + ); - // Create attributes - $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/attributes/string', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'key' => 'firstName', - 'size' => 256, - 'required' => true, - ]); + $this->assertEquals(201, $webhook['headers']['status-code']); + $this->assertEquals(true, $webhook['body']['enabled']); - $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/attributes/string', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'key' => 'lastName', - 'size' => 256, - 'required' => true, - ]); - - // Wait for attributes to be available - $this->assertEventually(function () use ($databaseId, $actorsId) { - $collection = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $actorsId, [ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'], - ]); - $this->assertCount(2, $collection['body']['attributes']); - $this->assertEquals('available', $collection['body']['attributes'][0]['status']); - $this->assertEquals('available', $collection['body']['attributes'][1]['status']); - }, 15000, 500); - - return ['databaseId' => $databaseId, 'actorsId' => $actorsId]; + // Cleanup + $this->deleteWebhook($webhook['body']['$id']); } - /** - * Creates a database and table with proper columns for row operations. - * - * @return array Array containing 'databaseId' and 'actorsId' - */ - protected function setupTableWithColumns(): array + public function testCreateWebhookWithoutAuthentication(): void { - // Create database - $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ + $response = $this->client->call(Client::METHOD_POST, '/webhooks', [ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'databaseId' => ID::unique(), - 'name' => 'Actors DB', + ], [ + 'webhookId' => ID::unique(), + 'name' => 'Test Webhook', + 'events' => ['users.*.create'], + 'url' => 'https://appwrite.io', ]); - $databaseId = $database['body']['$id']; - - // Create table - $actors = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'tableId' => ID::unique(), - 'name' => 'Actors', - 'permissions' => [ - Permission::read(Role::any()), - Permission::create(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - 'rowSecurity' => true, - ]); - - $actorsId = $actors['body']['$id']; - - // Create columns - $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/columns/string', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'key' => 'firstName', - 'size' => 256, - 'required' => true, - ]); - - $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/columns/string', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'key' => 'lastName', - 'size' => 256, - 'required' => true, - ]); - - // Wait for columns to be available - $this->assertEventually(function () use ($databaseId, $actorsId) { - $table = $this->client->call(Client::METHOD_GET, '/tablesdb/' . $databaseId . '/tables/' . $actorsId, [ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'], - ]); - $this->assertCount(2, $table['body']['columns']); - $this->assertEquals('available', $table['body']['columns'][0]['status']); - $this->assertEquals('available', $table['body']['columns'][1]['status']); - }, 15000, 500); - - return ['databaseId' => $databaseId, 'actorsId' => $actorsId]; + $this->assertEquals(401, $response['headers']['status-code']); } - /** - * Creates an enabled storage bucket. - * - * @return array Array containing 'bucketId' - */ - protected function setupStorageBucket(): array + public function testCreateWebhookInvalidId(): void { - $bucket = $this->client->call(Client::METHOD_POST, '/storage/buckets', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'bucketId' => ID::unique(), - 'name' => 'Test Bucket', - 'permissions' => [ - Permission::read(Role::any()), - Permission::create(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - 'fileSecurity' => true, - 'enabled' => true, - ]); + $webhook = $this->createWebhook( + '!invalid-id!', + 'Test Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); - return ['bucketId' => $bucket['body']['$id']]; + $this->assertEquals(400, $webhook['headers']['status-code']); } - /** - * Creates a team and returns its ID. - * - * @param string $name Team name - * @return array Array containing 'teamId' - */ - protected function setupTeam(string $name = 'Arsenal'): array + public function testCreateWebhookMissingName(): void { - $team = $this->client->call(Client::METHOD_POST, '/teams', array_merge([ + $response = $this->client->call(Client::METHOD_POST, '/webhooks', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'teamId' => ID::unique(), - 'name' => $name + 'webhookId' => ID::unique(), + 'events' => ['users.*.create'], + 'url' => 'https://appwrite.io', ]); - return ['teamId' => $team['body']['$id']]; + $this->assertEquals(400, $response['headers']['status-code']); } - /** - * Creates a team membership and returns membership details including secret. - * - * @param string $teamId The team ID - * @return array Array containing 'teamId', 'membershipId', 'userId', 'secret' - */ - protected function setupTeamMembership(string $teamId): array + public function testCreateWebhookMissingUrl(): void { - $email = uniqid() . 'friend@localhost.test'; - - // Create user first to ensure team event is triggered after user event - $this->client->call(Client::METHOD_POST, '/account', array_merge([ + $response = $this->client->call(Client::METHOD_POST, '/webhooks', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'userId' => ID::unique(), - 'email' => $email, - 'password' => 'password', - 'name' => 'Friend User', + 'webhookId' => ID::unique(), + 'name' => 'Test Webhook', + 'events' => ['users.*.create'], ]); - // Create membership - $team = $this->client->call(Client::METHOD_POST, '/teams/' . $teamId . '/memberships', array_merge([ + $this->assertEquals(400, $response['headers']['status-code']); + } + + public function testCreateWebhookMissingEvents(): void + { + $response = $this->client->call(Client::METHOD_POST, '/webhooks', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'email' => $email, - 'roles' => ['admin', 'editor'], - 'url' => 'http://localhost:5000/join-us#title' + 'webhookId' => ID::unique(), + 'name' => 'Test Webhook', + 'url' => 'https://appwrite.io', ]); - $membershipId = $team['body']['$id']; - $userId = $team['body']['userId']; - - // Get the secret from email (use probe to match correct email by recipient address) - $lastEmail = $this->getLastEmail(1, function ($msg) use ($email) { - $this->assertEquals($email, $msg['to'][0]['address'] ?? ''); - }); - $tokens = $this->extractQueryParamsFromEmailLink($lastEmail['html'] ?? ''); - $secret = $tokens['secret'] ?? ''; - - return [ - 'teamId' => $teamId, - 'membershipId' => $membershipId, - 'userId' => $userId, - 'secret' => $secret, - ]; + $this->assertEquals(400, $response['headers']['status-code']); } - /** - * Creates a document in a collection. - * - * @param string $databaseId Database ID - * @param string $collectionId Collection ID - * @return array Array containing document details including 'documentId' - */ - protected function setupDocument(string $databaseId, string $collectionId): array + public function testCreateWebhookDuplicateId(): void { - $document = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $collectionId . '/documents', array_merge([ + $webhookId = ID::unique(); + + $webhook = $this->createWebhook( + $webhookId, + 'Test Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + + // Attempt to create with same ID + $duplicate = $this->createWebhook( + $webhookId, + 'Duplicate Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(409, $duplicate['headers']['status-code']); + $this->assertEquals('webhook_already_exists', $duplicate['body']['type']); + + // Cleanup + $this->deleteWebhook($webhookId); + } + + public function testCreateWebhookAudit(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Audit Webhook', + ['users.*.create', 'users.*.update.email'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $this->assertNotEmpty($webhook['body']['$id']); + $this->assertContains('users.*.create', $webhook['body']['events']); + $this->assertContains('users.*.update.email', $webhook['body']['events']); + $this->assertCount(2, $webhook['body']['events']); + + // Cleanup + $this->deleteWebhook($webhook['body']['$id']); + } + + public function testUpdateWebhook(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Original Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; + + // Update the webhook + $updated = $this->updateWebhook( + $webhookId, + 'Updated Webhook', + ['users.*.delete', 'users.*.sessions.*.delete'], + null, + 'https://appwrite.io/new', + null, + null, + null + ); + + $this->assertEquals(200, $updated['headers']['status-code']); + $this->assertEquals($webhookId, $updated['body']['$id']); + $this->assertEquals('Updated Webhook', $updated['body']['name']); + $this->assertEquals('https://appwrite.io/new', $updated['body']['url']); + $this->assertContains('users.*.delete', $updated['body']['events']); + $this->assertContains('users.*.sessions.*.delete', $updated['body']['events']); + $this->assertCount(2, $updated['body']['events']); + + // Verify update persisted via GET + $get = $this->getWebhook($webhookId); + $this->assertEquals(200, $get['headers']['status-code']); + $this->assertEquals('Updated Webhook', $get['body']['name']); + $this->assertEquals('https://appwrite.io/new', $get['body']['url']); + + // Cleanup + $this->deleteWebhook($webhookId); + } + + public function testUpdateWebhookWithSecurity(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Security Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + false, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $this->assertEquals(false, $webhook['body']['security']); + $webhookId = $webhook['body']['$id']; + + // Update to enable security + $updated = $this->updateWebhook( + $webhookId, + 'Security Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + true, + null, + null + ); + + $this->assertEquals(200, $updated['headers']['status-code']); + $this->assertEquals(true, $updated['body']['security']); + $this->assertIsBool($updated['body']['security']); + + // Cleanup + $this->deleteWebhook($webhookId); + } + + public function testUpdateWebhookWithHttpAuth(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'HTTP Auth Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + true, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $this->assertEquals('', $webhook['body']['httpUser']); + $this->assertEquals('', $webhook['body']['httpPass']); + $webhookId = $webhook['body']['$id']; + + // Update with HTTP auth credentials + $updated = $this->updateWebhook( + $webhookId, + 'HTTP Auth Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + true, + 'newuser', + 'newpass' + ); + + $this->assertEquals(200, $updated['headers']['status-code']); + $this->assertEquals('newuser', $updated['body']['httpUser']); + $this->assertEquals('newpass', $updated['body']['httpPass']); + + // Verify via GET + $get = $this->getWebhook($webhookId); + $this->assertEquals(200, $get['headers']['status-code']); + $this->assertEquals('newuser', $get['body']['httpUser']); + + // Cleanup + $this->deleteWebhook($webhookId); + } + + public function testUpdateWebhookEnabled(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Enabled Webhook', + ['users.*.create'], + true, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $this->assertEquals(true, $webhook['body']['enabled']); + $webhookId = $webhook['body']['$id']; + + // Disable the webhook + $updated = $this->updateWebhook( + $webhookId, + 'Enabled Webhook', + ['users.*.create'], + false, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(200, $updated['headers']['status-code']); + $this->assertEquals(false, $updated['body']['enabled']); + $this->assertIsBool($updated['body']['enabled']); + + // Re-enable the webhook (should reset attempts to 0) + $updated = $this->updateWebhook( + $webhookId, + 'Enabled Webhook', + ['users.*.create'], + true, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(200, $updated['headers']['status-code']); + $this->assertEquals(true, $updated['body']['enabled']); + $this->assertEquals(0, $updated['body']['attempts']); + + // Cleanup + $this->deleteWebhook($webhookId); + } + + public function testUpdateWebhookWithoutAuthentication(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Auth Test Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; + + // Attempt update without authentication + $response = $this->client->call(Client::METHOD_PUT, '/webhooks/' . $webhookId, [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], [ + 'name' => 'Updated Webhook', + 'events' => ['users.*.create'], + 'url' => 'https://appwrite.io', + ]); + + $this->assertEquals(401, $response['headers']['status-code']); + + // Cleanup + $this->deleteWebhook($webhookId); + } + + public function testUpdateWebhookInvalidId(): void + { + $updated = $this->updateWebhook( + 'non-existent-id', + 'Updated Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(404, $updated['headers']['status-code']); + $this->assertEquals('webhook_not_found', $updated['body']['type']); + } + + public function testUpdateWebhookMissingName(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Missing Name Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; + + $response = $this->client->call(Client::METHOD_PUT, '/webhooks/' . $webhookId, array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'documentId' => ID::unique(), - 'data' => [ - 'firstName' => 'Chris', - 'lastName' => 'Evans', - ], - 'permissions' => [ - Permission::read(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], + 'events' => ['users.*.create'], + 'url' => 'https://appwrite.io', ]); - return ['documentId' => $document['body']['$id']]; + $this->assertEquals(400, $response['headers']['status-code']); + + // Cleanup + $this->deleteWebhook($webhookId); } - /** - * Creates a row in a table. - * - * @param string $databaseId Database ID - * @param string $tableId Table ID - * @return array Array containing row details including 'rowId' - */ - protected function setupRow(string $databaseId, string $tableId): array + public function testUpdateWebhookMissingUrl(): void { - $row = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $tableId . '/rows', array_merge([ + $webhook = $this->createWebhook( + ID::unique(), + 'Missing URL Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; + + $response = $this->client->call(Client::METHOD_PUT, '/webhooks/' . $webhookId, array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'rowId' => ID::unique(), - 'data' => [ - 'firstName' => 'Chris', - 'lastName' => 'Evans', - ], - 'permissions' => [ - Permission::read(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], + 'name' => 'Missing URL Webhook', + 'events' => ['users.*.create'], ]); - return ['rowId' => $row['body']['$id']]; + $this->assertEquals(400, $response['headers']['status-code']); + + // Cleanup + $this->deleteWebhook($webhookId); } - /** - * Creates a file in a bucket. - * - * @param string $bucketId Bucket ID - * @return array Array containing file details including 'fileId' - */ - protected function setupBucketFile(string $bucketId): array + public function testUpdateWebhookMissingEvents(): void { - $file = $this->client->call(Client::METHOD_POST, '/storage/buckets/' . $bucketId . '/files', array_merge([ - 'content-type' => 'multipart/form-data', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'fileId' => ID::unique(), - 'file' => new CURLFile(realpath(__DIR__ . '/../../../resources/logo.png'), 'image/png', 'logo.png'), - 'permissions' => [ - Permission::read(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - 'folderId' => ID::custom('xyz'), - ]); + $webhook = $this->createWebhook( + ID::unique(), + 'Missing Events Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); - return ['fileId' => $file['body']['$id']]; - } + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; - // Collection APIs - public function testCreateCollection(): void - { - /** - * Create database - */ - $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'databaseId' => ID::unique(), - 'name' => 'Actors DB', - ]); - - $databaseId = $database['body']['$id']; - - /** - * Test for SUCCESS - */ - $actors = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'collectionId' => ID::unique(), - 'name' => 'Actors', - 'permissions' => [ - Permission::read(Role::any()), - Permission::create(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - 'documentSecurity' => true, - ]); - - $actorsId = $actors['body']['$id']; - - $this->assertEquals($actors['headers']['status-code'], 201); - $this->assertNotEmpty($actors['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.create")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), true); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals($webhook['data']['name'], 'Actors'); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertCount(4, $webhook['data']['$permissions']); - } - - public function testCreateAttributes(): void - { - /** - * Create database - */ - $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'databaseId' => ID::unique(), - 'name' => 'Actors DB', - ]); - - $databaseId = $database['body']['$id']; - - /** - * Create collection - */ - $actors = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'collectionId' => ID::unique(), - 'name' => 'Actors', - 'permissions' => [ - Permission::read(Role::any()), - Permission::create(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - 'documentSecurity' => true, - ]); - - $actorsId = $actors['body']['$id']; - - $firstName = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/attributes/string', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'key' => 'firstName', - 'size' => 256, - 'required' => true, - ]); - - $lastName = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/attributes/string', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'key' => 'lastName', - 'size' => 256, - 'required' => true, - ]); - - $extra = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/attributes/string', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'key' => 'extra', - 'size' => 64, - 'required' => false, - ]); - - $attributeId = $extra['body']['key']; - - $this->assertEquals($firstName['headers']['status-code'], 202); - $this->assertEquals($firstName['body']['key'], 'firstName'); - $this->assertEquals($lastName['headers']['status-code'], 202); - $this->assertEquals($lastName['body']['key'], 'lastName'); - $this->assertEquals($extra['headers']['status-code'], 202); - $this->assertEquals($extra['body']['key'], 'extra'); - - // wait for database worker to kick in - $this->assertEventually(function () use ($databaseId, $actorsId) { - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.attributes.*.create")); - $this->assertNotEmpty($webhook); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.attributes.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.attributes.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.attributes.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.attributes.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertNotEmpty($webhook['data']['key']); - $this->assertEquals($webhook['data']['key'], 'extra'); - }, 15000, 500); - - $removed = $this->client->call(Client::METHOD_DELETE, '/databases/' . $databaseId . '/collections/' . $actorsId . '/attributes/' . $extra['body']['key'], array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ])); - - $this->assertEquals(204, $removed['headers']['status-code']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.attributes.*.update")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - // $this->assertEquals($webhook['method'], 'DELETE'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.attributes.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.attributes.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.attributes.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.attributes.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertNotEmpty($webhook['data']['key']); - $this->assertEquals($webhook['data']['key'], 'extra'); - } - - public function testCreateDocument(): void - { - // Set up collection with attributes - $data = $this->setupCollectionWithAttributes(); - $actorsId = $data['actorsId']; - $databaseId = $data['databaseId']; - - /** - * Test for SUCCESS - */ - $document = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/documents', array_merge([ + $response = $this->client->call(Client::METHOD_PUT, '/webhooks/' . $webhookId, array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'documentId' => ID::unique(), - 'data' => [ - 'firstName' => 'Chris', - 'lastName' => 'Evans', - ], - 'permissions' => [ - Permission::read(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], + 'name' => 'Missing Events Webhook', + 'url' => 'https://appwrite.io', ]); - $documentId = $document['body']['$id']; + $this->assertEquals(400, $response['headers']['status-code']); - $this->assertEquals($document['headers']['status-code'], 201); - $this->assertNotEmpty($document['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}.create")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.documents.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.documents.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.*.documents.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.*.documents.{$documentId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals($webhook['data']['firstName'], 'Chris'); - $this->assertEquals($webhook['data']['lastName'], 'Evans'); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertCount(3, $webhook['data']['$permissions']); + // Cleanup + $this->deleteWebhook($webhookId); } - public function testUpdateDocument(): void + public function testUpdateWebhookDuplicateId(): void { - // Set up collection with attributes and create a document - $data = $this->setupCollectionWithAttributes(); - $actorsId = $data['actorsId']; - $databaseId = $data['databaseId']; - $documentData = $this->setupDocument($databaseId, $actorsId); - $documentId = $documentData['documentId']; + // Update endpoint doesn't change the ID, so this tests updating a non-existent webhook + $updated = $this->updateWebhook( + 'non-existent-id', + 'Duplicate Test Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); - /** - * Test for SUCCESS - */ - $document = $this->client->call(Client::METHOD_PATCH, '/databases/' . $databaseId . '/collections/' . $actorsId . '/documents/' . $documentId, array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'data' => [ - 'firstName' => 'Chris1', - 'lastName' => 'Evans2', - ], - 'permissions' => [ - Permission::read(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - ]); - - $documentId = $document['body']['$id']; - - $this->assertEquals($document['headers']['status-code'], 200); - $this->assertNotEmpty($document['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}.update")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.documents.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.documents.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.*.documents.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.*.documents.{$documentId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals($webhook['data']['firstName'], 'Chris1'); - $this->assertEquals($webhook['data']['lastName'], 'Evans2'); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertCount(3, $webhook['data']['$permissions']); + $this->assertEquals(404, $updated['headers']['status-code']); + $this->assertEquals('webhook_not_found', $updated['body']['type']); } - #[Retry(count: 1)] - public function testDeleteDocument(): void + public function testUpdateWebhookAudit(): void { - // Set up collection with attributes - $data = $this->setupCollectionWithAttributes(); - $actorsId = $data['actorsId']; - $databaseId = $data['databaseId']; + $webhook = $this->createWebhook( + ID::unique(), + 'Audit Update Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); - /** - * Test for SUCCESS - */ - $document = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/documents', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'documentId' => ID::unique(), - 'data' => [ - 'firstName' => 'Bradly', - 'lastName' => 'Cooper', + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; - ], - 'permissions' => [ - Permission::read(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - ]); + // Update with multiple events + $updated = $this->updateWebhook( + $webhookId, + 'Audit Update Webhook Updated', + ['users.*.delete', 'users.*.sessions.*.delete', 'buckets.*.files.*.create'], + null, + 'https://appwrite.io/updated', + true, + 'user', + 'pass' + ); - $documentId = $document['body']['$id']; + $this->assertEquals(200, $updated['headers']['status-code']); + $this->assertEquals($webhookId, $updated['body']['$id']); + $this->assertEquals('Audit Update Webhook Updated', $updated['body']['name']); + $this->assertContains('users.*.delete', $updated['body']['events']); + $this->assertContains('users.*.sessions.*.delete', $updated['body']['events']); + $this->assertContains('buckets.*.files.*.create', $updated['body']['events']); + $this->assertCount(3, $updated['body']['events']); + $this->assertEquals('https://appwrite.io/updated', $updated['body']['url']); + $this->assertEquals(true, $updated['body']['security']); + $this->assertEquals('user', $updated['body']['httpUser']); + $this->assertEquals('pass', $updated['body']['httpPass']); - $this->assertEquals($document['headers']['status-code'], 201); - $this->assertNotEmpty($document['body']['$id']); - - $document = $this->client->call(Client::METHOD_DELETE, '/databases/' . $databaseId . '/collections/' . $actorsId . '/documents/' . $document['body']['$id'], array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders())); - - $this->assertEquals($document['headers']['status-code'], 204); - - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}.delete")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.documents.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.documents.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.*.documents.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.*.documents.{$documentId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.*.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.documents.{$documentId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals($webhook['data']['firstName'], 'Bradly'); - $this->assertEquals($webhook['data']['lastName'], 'Cooper'); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertCount(3, $webhook['data']['$permissions']); + // Cleanup + $this->deleteWebhook($webhookId); } - // Table APIs - public function testCreateTable(): void + public function testUpdateWebhookSignature(): void { - /** - * Create database - */ - $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'databaseId' => ID::unique(), - 'name' => 'Actors DB', - ]); + $webhook = $this->createWebhook( + ID::unique(), + 'Signature Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); - $databaseId = $database['body']['$id']; + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; + $originalSignatureKey = $webhook['body']['signatureKey']; - /** - * Test for SUCCESS - */ - $actors = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'tableId' => ID::unique(), - 'name' => 'Actors', - 'permissions' => [ - Permission::read(Role::any()), - Permission::create(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - 'rowSecurity' => true, - ]); + $this->assertNotEmpty($originalSignatureKey); + $this->assertEquals(128, \strlen($originalSignatureKey)); - $actorsId = $actors['body']['$id']; + // Update signature + $updated = $this->updateWebhookSignature($webhookId); - $this->assertEquals($actors['headers']['status-code'], 201); - $this->assertNotEmpty($actors['body']['$id']); + $this->assertEquals(200, $updated['headers']['status-code']); + $this->assertEquals($webhookId, $updated['body']['$id']); + $this->assertNotEmpty($updated['body']['signatureKey']); + $this->assertEquals(128, \strlen($updated['body']['signatureKey'])); + $this->assertNotEquals($originalSignatureKey, $updated['body']['signatureKey']); - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.create")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); + // Verify new signature persisted via GET + $get = $this->getWebhook($webhookId); + $this->assertEquals(200, $get['headers']['status-code']); + $this->assertNotEquals($originalSignatureKey, $get['body']['signatureKey']); - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), true); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals($webhook['data']['name'], 'Actors'); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertCount(4, $webhook['data']['$permissions']); + // Test signature update on non-existent webhook + $notFound = $this->updateWebhookSignature('non-existent-id'); + $this->assertEquals(404, $notFound['headers']['status-code']); + $this->assertEquals('webhook_not_found', $notFound['body']['type']); + + // Cleanup + $this->deleteWebhook($webhookId); } - public function testCreateColumns(): void - { - /** - * Create database - */ - $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'databaseId' => ID::unique(), - 'name' => 'Actors DB', - ]); - - $databaseId = $database['body']['$id']; - - /** - * Create table - */ - $actors = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'tableId' => ID::unique(), - 'name' => 'Actors', - 'permissions' => [ - Permission::read(Role::any()), - Permission::create(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - 'rowSecurity' => true, - ]); - - $actorsId = $actors['body']['$id']; - - $firstName = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/columns/string', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'key' => 'firstName', - 'size' => 256, - 'required' => true, - ]); - - $lastName = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/columns/string', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'key' => 'lastName', - 'size' => 256, - 'required' => true, - ]); - - $extra = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/columns/string', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'key' => 'extra', - 'size' => 64, - 'required' => false, - ]); - - $this->assertEquals($firstName['headers']['status-code'], 202); - $this->assertEquals($firstName['body']['key'], 'firstName'); - $this->assertEquals($lastName['headers']['status-code'], 202); - $this->assertEquals($lastName['body']['key'], 'lastName'); - $this->assertEquals($extra['headers']['status-code'], 202); - $this->assertEquals($extra['body']['key'], 'extra'); - - // wait for database worker to kick in - $this->assertEventually(function () use ($databaseId, $actorsId) { - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.columns.*.create")); - $this->assertNotEmpty($webhook); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.columns.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.columns.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.columns.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.columns.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertNotEmpty($webhook['data']['key']); - $this->assertEquals($webhook['data']['key'], 'extra'); - }, 15000, 500); - - $removed = $this->client->call(Client::METHOD_DELETE, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/columns/' . $extra['body']['key'], array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ])); - - $this->assertEquals(204, $removed['headers']['status-code']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.columns.*.update")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - // $this->assertEquals($webhook['method'], 'DELETE'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.columns.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.columns.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.columns.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.columns.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertNotEmpty($webhook['data']['key']); - $this->assertEquals($webhook['data']['key'], 'extra'); - } - - public function testCreateRow(): void - { - // Set up table with columns - $data = $this->setupTableWithColumns(); - $actorsId = $data['actorsId']; - $databaseId = $data['databaseId']; - - /** - * Test for SUCCESS - */ - $row = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/rows', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'rowId' => ID::unique(), - 'data' => [ - 'firstName' => 'Chris', - 'lastName' => 'Evans', - ], - 'permissions' => [ - Permission::read(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - ]); - - $documentId = $row['body']['$id']; - - $this->assertEquals($row['headers']['status-code'], 201); - $this->assertNotEmpty($row['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.rows.{$documentId}.create")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.rows.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.rows.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.*.rows.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.*.rows.{$documentId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.{$documentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.{$documentId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals($webhook['data']['firstName'], 'Chris'); - $this->assertEquals($webhook['data']['lastName'], 'Evans'); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertCount(3, $webhook['data']['$permissions']); - } - - public function testUpdateRow(): void - { - // Set up table with columns and create a row - $data = $this->setupTableWithColumns(); - $actorsId = $data['actorsId']; - $databaseId = $data['databaseId']; - $rowData = $this->setupRow($databaseId, $actorsId); - $rowId = $rowData['rowId']; - - /** - * Test for SUCCESS - */ - $document = $this->client->call(Client::METHOD_PATCH, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/rows/' . $rowId, array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'data' => [ - 'firstName' => 'Chris1', - 'lastName' => 'Evans2', - ], - 'permissions' => [ - Permission::read(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - ]); - - $rowId = $document['body']['$id']; - - $this->assertEquals($document['headers']['status-code'], 200); - $this->assertNotEmpty($document['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.rows.{$rowId}.update")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.rows.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.rows.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.*.rows.{$rowId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.*.rows.{$rowId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.{$rowId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.{$rowId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals($webhook['data']['firstName'], 'Chris1'); - $this->assertEquals($webhook['data']['lastName'], 'Evans2'); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertCount(3, $webhook['data']['$permissions']); - } - - #[Retry(count: 1)] - public function testDeleteRow(): void - { - // Set up table with columns - $data = $this->setupTableWithColumns(); - $actorsId = $data['actorsId']; - $databaseId = $data['databaseId']; - - /** - * Test for SUCCESS - */ - $row = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/rows', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'rowId' => ID::unique(), - 'data' => [ - 'firstName' => 'Bradly', - 'lastName' => 'Cooper', - - ], - 'permissions' => [ - Permission::read(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - ]); - - $rowId = $row['body']['$id']; - - $this->assertEquals($row['headers']['status-code'], 201); - $this->assertNotEmpty($row['body']['$id']); - - $row = $this->client->call(Client::METHOD_DELETE, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/rows/' . $row['body']['$id'], array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders())); - - $this->assertEquals($row['headers']['status-code'], 204); - - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.rows.{$rowId}.delete")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.rows.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.rows.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.*.rows.{$rowId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.*.rows.{$rowId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.*.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.{$rowId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.rows.{$rowId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals($webhook['data']['firstName'], 'Bradly'); - $this->assertEquals($webhook['data']['lastName'], 'Cooper'); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertCount(3, $webhook['data']['$permissions']); - } - - public function testCreateStorageBucket(): void - { - /** - * Test for SUCCESS - */ - $bucket = $this->client->call(Client::METHOD_POST, '/storage/buckets', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'bucketId' => ID::unique(), - 'name' => 'Test Bucket', - 'permissions' => [ - Permission::read(Role::any()), - Permission::create(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - ]); - - $bucketId = $bucket['body']['$id']; - - $this->assertEquals($bucket['headers']['status-code'], 201); - $this->assertNotEmpty($bucket['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("buckets.{$bucketId}.create")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('buckets.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('buckets.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), true); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals('Test Bucket', $webhook['data']['name']); - $this->assertEquals(true, $webhook['data']['enabled']); - $this->assertIsArray($webhook['data']['$permissions']); - } - - public function testUpdateStorageBucket(): void - { - // Set up a storage bucket - $data = $this->setupStorageBucket(); - $bucketId = $data['bucketId']; - - /** - * Test for SUCCESS - */ - $bucket = $this->client->call(Client::METHOD_PUT, '/storage/buckets/' . $bucketId, array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'name' => 'Test Bucket Updated', - 'fileSecurity' => true, - 'enabled' => false, - ]); - - $this->assertEquals($bucket['headers']['status-code'], 200); - $this->assertNotEmpty($bucket['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("buckets.{$bucketId}.update")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('buckets.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('buckets.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), true); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals('Test Bucket Updated', $webhook['data']['name']); - $this->assertEquals(false, $webhook['data']['enabled']); - $this->assertIsArray($webhook['data']['$permissions']); - } - - public function testCreateBucketFile(): void - { - // Set up an enabled storage bucket - $data = $this->setupStorageBucket(); - $bucketId = $data['bucketId']; - - /** - * Test for SUCCESS - */ - $file = $this->client->call(Client::METHOD_POST, '/storage/buckets/' . $bucketId . '/files', array_merge([ - 'content-type' => 'multipart/form-data', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'fileId' => ID::unique(), - 'file' => new CURLFile(realpath(__DIR__ . '/../../../resources/logo.png'), 'image/png', 'logo.png'), - 'permissions' => [ - Permission::read(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - 'folderId' => ID::custom('xyz'), - ]); - - $fileId = $file['body']['$id']; - - $this->assertEquals($file['headers']['status-code'], 201); - $this->assertNotEmpty($file['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("buckets.{$bucketId}.files.{$fileId}.create")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('buckets.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('buckets.*.files.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('buckets.*.files.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.*.files.{$fileId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.*.files.{$fileId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}.files.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}.files.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}.files.{$fileId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}.files.{$fileId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertEquals($webhook['data']['name'], 'logo.png'); - $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['$createdAt'])); - $this->assertNotEmpty($webhook['data']['signature']); - $this->assertEquals($webhook['data']['mimeType'], 'image/png'); - $this->assertEquals($webhook['data']['sizeOriginal'], 47218); - } - - public function testUpdateBucketFile(): void - { - // Set up an enabled storage bucket and create a file - $data = $this->setupStorageBucket(); - $bucketId = $data['bucketId']; - $fileData = $this->setupBucketFile($bucketId); - $fileId = $fileData['fileId']; - - /** - * Test for SUCCESS - */ - $file = $this->client->call(Client::METHOD_PUT, '/storage/buckets/' . $bucketId . '/files/' . $fileId, array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'permissions' => [ - Permission::read(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - ]); - - $this->assertEquals($file['headers']['status-code'], 200); - $this->assertNotEmpty($file['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("buckets.{$bucketId}.files.{$fileId}.update")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('buckets.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('buckets.*.files.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('buckets.*.files.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.*.files.{$fileId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.*.files.{$fileId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}.files.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}.files.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}.files.{$fileId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}.files.{$fileId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertEquals($webhook['data']['name'], 'logo.png'); - $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['$createdAt'])); - $this->assertNotEmpty($webhook['data']['signature']); - $this->assertEquals($webhook['data']['mimeType'], 'image/png'); - $this->assertEquals($webhook['data']['sizeOriginal'], 47218); - } - - public function testDeleteBucketFile(): void - { - // Set up an enabled storage bucket and create a file - $data = $this->setupStorageBucket(); - $bucketId = $data['bucketId']; - $fileData = $this->setupBucketFile($bucketId); - $fileId = $fileData['fileId']; - - /** - * Test for SUCCESS - */ - $file = $this->client->call(Client::METHOD_DELETE, '/storage/buckets/' . $bucketId . '/files/' . $fileId, array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders())); - - $this->assertEquals(204, $file['headers']['status-code']); - $this->assertEmpty($file['body']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("buckets.{$bucketId}.files.{$fileId}.delete")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('buckets.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('buckets.*.files.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('buckets.*.files.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.*.files.{$fileId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.*.files.{$fileId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}.files.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}.files.*.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}.files.{$fileId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}.files.{$fileId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertEquals($webhook['data']['name'], 'logo.png'); - $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['$createdAt'])); - $this->assertNotEmpty($webhook['data']['signature']); - $this->assertEquals($webhook['data']['mimeType'], 'image/png'); - $this->assertEquals($webhook['data']['sizeOriginal'], 47218); - } - - public function testDeleteStorageBucket(): void - { - // Set up an enabled storage bucket - $data = $this->setupStorageBucket(); - $bucketId = $data['bucketId']; - - // Update bucket name before deleting to make test self-sufficient - // (In parallel execution, testUpdateStorageBucket may not have run) - $this->client->call(Client::METHOD_PUT, '/storage/buckets/' . $bucketId, array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'name' => 'Test Bucket Updated', - 'fileSecurity' => true, - ]); - - /** - * Test for SUCCESS - */ - $bucket = $this->client->call(Client::METHOD_DELETE, '/storage/buckets/' . $bucketId, array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ])); - - $this->assertEquals($bucket['headers']['status-code'], 204); - $this->assertEmpty($bucket['body']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("buckets.{$bucketId}.delete")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('buckets.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('buckets.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("buckets.{$bucketId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), true); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals('Test Bucket Updated', $webhook['data']['name']); - $this->assertEquals(true, $webhook['data']['enabled']); - $this->assertIsArray($webhook['data']['$permissions']); - } - - public function testCreateTeam(): void - { - /** - * Test for SUCCESS - */ - $team = $this->client->call(Client::METHOD_POST, '/teams', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'teamId' => ID::unique(), - 'name' => 'Arsenal' - ]); - - $teamId = $team['body']['$id']; - - $this->assertEquals(201, $team['headers']['status-code']); - $this->assertNotEmpty($team['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("teams.{$teamId}.create")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('teams.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('teams.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals('Arsenal', $webhook['data']['name']); - $this->assertGreaterThan(-1, $webhook['data']['total']); - $this->assertIsInt($webhook['data']['total']); - $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['$createdAt'])); - } - - public function testUpdateTeam(): void - { - // Set up a team - $data = $this->setupTeam(); - $teamId = $data['teamId']; - /** - * Test for SUCCESS - */ - $team = $this->client->call(Client::METHOD_PUT, '/teams/' . $teamId, array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'name' => 'Demo New' - ]); - - $this->assertEquals(200, $team['headers']['status-code']); - $this->assertNotEmpty($team['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("teams.{$teamId}.update")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('teams.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('teams.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals('Demo New', $webhook['data']['name']); - $this->assertGreaterThan(-1, $webhook['data']['total']); - $this->assertIsInt($webhook['data']['total']); - $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['$createdAt'])); - } - - public function testUpdateTeamPrefs(): void - { - // Set up a team - $data = $this->setupTeam(); - $id = $data['teamId']; - - $team = $this->client->call(Client::METHOD_PUT, '/teams/' . $id . '/prefs', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'prefs' => [ - 'prefKey1' => 'prefValue1', - 'prefKey2' => 'prefValue2', - ] - ]); - - $this->assertEquals($team['headers']['status-code'], 200); - $this->assertIsArray($team['body']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("teams.{$id}.update.prefs")); - $signatureKey = $this->getProject()['signatureKey']; - $payload = json_encode($webhook['data']); - $url = $webhook['url']; - $signatureExpected = base64_encode(hash_hmac('sha1', $url . $payload, $signatureKey, true)); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('teams.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('teams.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('teams.*.update.prefs', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$id}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$id}.update.prefs", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertEquals($webhook['data'], [ - 'prefKey1' => 'prefValue1', - 'prefKey2' => 'prefValue2', - ]); - } - - public function testDeleteTeam(): void - { - /** - * Test for SUCCESS - */ - $team = $this->client->call(Client::METHOD_POST, '/teams', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'teamId' => ID::unique(), - 'name' => 'Chelsea' - ]); - - $teamId = $team['body']['$id']; - - $this->assertEquals(201, $team['headers']['status-code']); - $this->assertNotEmpty($team['body']['$id']); - - $team = $this->client->call(Client::METHOD_DELETE, '/teams/' . $team['body']['$id'], array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders())); - - $webhook = $this->getLastRequest($this->webhookEventProbe("teams.{$teamId}.delete")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('teams.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('teams.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals('Chelsea', $webhook['data']['name']); - $this->assertGreaterThan(-1, $webhook['data']['total']); - $this->assertIsInt($webhook['data']['total']); - $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['$createdAt'])); - } - - public function testCreateTeamMembership(): void - { - // Set up a team - $data = $this->setupTeam(); - $teamId = $data['teamId']; - $email = uniqid() . 'friend@localhost.test'; - - // Create user to ensure team event is triggered after user event - $user = $this->client->call(Client::METHOD_POST, '/account', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'userId' => ID::unique(), - 'email' => $email, - 'password' => 'password', - 'name' => 'Friend User', - ]); - - /** - * Test for SUCCESS - */ - $team = $this->client->call(Client::METHOD_POST, '/teams/' . $teamId . '/memberships', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'email' => $email, - 'roles' => ['admin', 'editor'], - 'url' => 'http://localhost:5000/join-us#title' - ]); - - $this->assertEquals(201, $team['headers']['status-code']); - $this->assertNotEmpty($team['body']['$id']); - - $lastEmail = $this->getLastEmail(); - - // `$isAppUser` — no email expected; - $tokens = $this->extractQueryParamsFromEmailLink($lastEmail['html'] ?? ''); - - $secret = $tokens['secret'] ?? ''; - $membershipId = $team['body']['$id']; - - $webhook = $this->getLastRequest($this->webhookEventProbe("teams.{$teamId}.memberships.{$membershipId}.create")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('teams.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('teams.*.memberships.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('teams.*.memberships.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.*.memberships.{$membershipId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.*.memberships.{$membershipId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}.memberships.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}.memberships.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}.memberships.{$membershipId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}.memberships.{$membershipId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertNotEmpty($webhook['data']['userId']); - $this->assertNotEmpty($webhook['data']['teamId']); - $this->assertCount(2, $webhook['data']['roles']); - $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['invited'])); - $this->assertEquals(('server' === $this->getSide()), $webhook['data']['confirm']); - } - - public function testDeleteTeamMembership(): void - { - // Set up a team - $data = $this->setupTeam(); - $teamId = $data['teamId']; - $email = uniqid() . 'friend@localhost.test'; - - /** - * Test for SUCCESS - */ - $team = $this->client->call(Client::METHOD_POST, '/teams/' . $teamId . '/memberships', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'email' => $email, - 'name' => 'Friend User', - 'roles' => ['admin', 'editor'], - 'url' => 'http://localhost:5000/join-us#title' - ]); - - $membershipId = $team['body']['$id'] ?? ''; - - $this->assertEquals(201, $team['headers']['status-code']); - $this->assertNotEmpty($team['body']['$id']); - - $team = $this->client->call(Client::METHOD_DELETE, '/teams/' . $teamId . '/memberships/' . $team['body']['$id'], array_merge([ - 'origin' => 'http://localhost', - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders())); - - $this->assertEquals(204, $team['headers']['status-code']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("teams.{$teamId}.memberships.{$membershipId}.delete")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals($webhook['method'], 'POST'); - $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); - $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); - $this->assertStringContainsString('teams.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('teams.*.memberships.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('teams.*.memberships.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.*.memberships.{$membershipId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.*.memberships.{$membershipId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}.memberships.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}.memberships.*.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}.memberships.{$membershipId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("teams.{$teamId}.memberships.{$membershipId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertNotEmpty($webhook['data']['userId']); - $this->assertNotEmpty($webhook['data']['teamId']); - $this->assertCount(2, $webhook['data']['roles']); - $this->assertEquals(true, (new DatetimeValidator())->isValid($webhook['data']['invited'])); - $this->assertEquals(('server' === $this->getSide()), $webhook['data']['confirm']); - } + // URL validation tests public function testCreateWebhookWithPrivateDomain(): void { - /** - * Test for FAILURE - */ - $projectId = $this->getProject()['$id']; - $webhook = $this->client->call(Client::METHOD_POST, '/projects/' . $projectId . '/webhooks', [ - 'origin' => 'http://localhost', - 'content-type' => 'application/json', - 'cookie' => 'a_session_console=' . $this->getRoot()['session'], - 'x-appwrite-project' => 'console', - ], [ - 'name' => 'Webhook Test', - 'enabled' => true, - 'events' => [ - 'databases.*', - 'functions.*', - 'buckets.*', - 'teams.*', - 'users.*' - ], - 'url' => 'http://localhost/webhook', // private domains not allowed - 'security' => false, - ]); + $webhook = $this->createWebhook( + ID::unique(), + 'Private Domain Webhook', + ['users.*.create'], + null, + 'http://localhost/webhook', + null, + null, + null + ); $this->assertEquals(400, $webhook['headers']['status-code']); } public function testUpdateWebhookWithPrivateDomain(): void { - /** - * Test for FAILURE - */ - $projectId = $this->getProject()['$id']; - $webhookId = $this->getProject()['webhookId']; - $webhook = $this->client->call(Client::METHOD_PUT, '/projects/' . $projectId . '/webhooks/' . $webhookId, [ - 'origin' => 'http://localhost', - 'content-type' => 'application/json', - 'cookie' => 'a_session_console=' . $this->getRoot()['session'], - 'x-appwrite-project' => 'console', - ], [ - 'name' => 'Webhook Test', - 'enabled' => true, - 'events' => [ - 'databases.*', - 'functions.*', - 'buckets.*', - 'teams.*', - 'users.*' - ], - 'url' => 'http://localhost/webhook', // private domains not allowed - 'security' => false, - ]); + $webhook = $this->createWebhook( + ID::unique(), + 'Private Domain Update Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; + + // Attempt to update URL to private domain + $updated = $this->updateWebhook( + $webhookId, + 'Private Domain Update Webhook', + ['users.*.create'], + null, + 'http://localhost/webhook', + null, + null, + null + ); + + $this->assertEquals(400, $updated['headers']['status-code']); + + // Verify original URL unchanged + $get = $this->getWebhook($webhookId); + $this->assertEquals(200, $get['headers']['status-code']); + $this->assertEquals('https://appwrite.io', $get['body']['url']); + + // Cleanup + $this->deleteWebhook($webhookId); + } + + public function testCreateWebhookInvalidUrlScheme(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Invalid Scheme Webhook', + ['users.*.create'], + null, + 'invalid://appwrite.io', + null, + null, + null + ); $this->assertEquals(400, $webhook['headers']['status-code']); } - public function testWebhookAutoDisable(): void + public function testUpdateWebhookInvalidUrlScheme(): void { - $projectId = $this->getProject()['$id']; - $webhookId = $this->getProject()['webhookId']; + $webhook = $this->createWebhook( + ID::unique(), + 'Scheme Update Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); - // Create a database for this test - $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; + + // Attempt to update URL to invalid scheme + $updated = $this->updateWebhook( + $webhookId, + 'Scheme Update Webhook', + ['users.*.create'], + null, + 'invalid://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(400, $updated['headers']['status-code']); + + // Verify original URL unchanged + $get = $this->getWebhook($webhookId); + $this->assertEquals(200, $get['headers']['status-code']); + $this->assertEquals('https://appwrite.io', $get['body']['url']); + + // Cleanup + $this->deleteWebhook($webhookId); + } + + // Event validation tests + + public function testCreateWebhookInvalidEvents(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Invalid Events Webhook', + ['account.unknown'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(400, $webhook['headers']['status-code']); + } + + public function testUpdateWebhookInvalidEvents(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Invalid Events Update Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; + + // Attempt to update with invalid event + $updated = $this->updateWebhook( + $webhookId, + 'Invalid Events Update Webhook', + ['account.unknown'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(400, $updated['headers']['status-code']); + + // Verify original events unchanged + $get = $this->getWebhook($webhookId); + $this->assertEquals(200, $get['headers']['status-code']); + $this->assertContains('users.*.create', $get['body']['events']); + + // Cleanup + $this->deleteWebhook($webhookId); + } + + // Custom ID test + + public function testCreateWebhookCustomId(): void + { + $customId = 'my-custom-webhook-id'; + + $webhook = $this->createWebhook( + $customId, + 'Custom ID Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $this->assertEquals($customId, $webhook['body']['$id']); + + // Verify via GET + $get = $this->getWebhook($customId); + $this->assertEquals(200, $get['headers']['status-code']); + $this->assertEquals($customId, $get['body']['$id']); + + // Cleanup + $this->deleteWebhook($customId); + } + + // Get webhook tests + + public function testGetWebhook(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Get Test Webhook', + ['users.*.create', 'users.*.update.email'], + null, + 'https://appwrite.io', + true, + 'myuser', + 'mypass' + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; + + $get = $this->getWebhook($webhookId); + + $this->assertEquals(200, $get['headers']['status-code']); + $this->assertEquals($webhookId, $get['body']['$id']); + $this->assertEquals('Get Test Webhook', $get['body']['name']); + $this->assertEquals('https://appwrite.io', $get['body']['url']); + $this->assertContains('users.*.create', $get['body']['events']); + $this->assertContains('users.*.update.email', $get['body']['events']); + $this->assertCount(2, $get['body']['events']); + $this->assertEquals(true, $get['body']['enabled']); + $this->assertEquals(true, $get['body']['security']); + $this->assertEquals('myuser', $get['body']['httpUser']); + $this->assertEquals('mypass', $get['body']['httpPass']); + $this->assertNotEmpty($get['body']['signatureKey']); + $this->assertEquals(128, \strlen($get['body']['signatureKey'])); + $this->assertEquals(0, $get['body']['attempts']); + $this->assertEquals('', $get['body']['logs']); + + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($get['body']['$createdAt'])); + $this->assertEquals(true, $dateValidator->isValid($get['body']['$updatedAt'])); + + // Cleanup + $this->deleteWebhook($webhookId); + } + + public function testGetWebhookNotFound(): void + { + $get = $this->getWebhook('non-existent-id'); + + $this->assertEquals(404, $get['headers']['status-code']); + $this->assertEquals('webhook_not_found', $get['body']['type']); + } + + public function testGetWebhookWithoutAuthentication(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Auth Get Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; + + // Attempt GET without authentication + $response = $this->client->call(Client::METHOD_GET, '/webhooks/' . $webhookId, [ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'databaseId' => ID::unique(), - 'name' => 'AutoDisable DB', ]); - $databaseId = $database['body']['$id']; + $this->assertEquals(401, $response['headers']['status-code']); - $webhook = $this->client->call(Client::METHOD_PUT, '/projects/' . $projectId . '/webhooks/' . $webhookId, [ - 'origin' => 'http://localhost', - 'content-type' => 'application/json', - 'cookie' => 'a_session_console=' . $this->getRoot()['session'], - 'x-appwrite-project' => 'console', - ], [ - 'name' => 'Webhook Test', - 'enabled' => true, - 'events' => [ - 'databases.*', - 'functions.*', - 'buckets.*', - 'teams.*', - 'users.*' - ], - 'url' => 'http://appwrite-non-existing-domain.com', // set non-existent URL - 'security' => false, - ]); + // Cleanup + $this->deleteWebhook($webhookId); + } - $this->assertEquals(200, $webhook['headers']['status-code']); - $this->assertNotEmpty($webhook['body']); + // List webhooks tests - // trigger webhook for failure event 10 times - for ($i = 0; $i < 10; $i++) { - $newCollection = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'collectionId' => ID::unique(), - 'name' => 'newCollection' . $i, - 'permissions' => [ - Permission::read(Role::any()), - Permission::create(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - 'documentSecurity' => true, - ]); + public function testListWebhooks(): void + { + // Create multiple webhooks + $webhook1 = $this->createWebhook( + ID::unique(), + 'List Webhook Alpha', + ['users.*.create'], + true, + 'https://appwrite.io/alpha', + false, + null, + null + ); + $this->assertEquals(201, $webhook1['headers']['status-code']); - $this->assertEquals($newCollection['headers']['status-code'], 201); - $this->assertNotEmpty($newCollection['body']['$id']); + $webhook2 = $this->createWebhook( + ID::unique(), + 'List Webhook Beta', + ['users.*.delete'], + false, + 'https://appwrite.io/beta', + true, + 'user', + 'pass' + ); + $this->assertEquals(201, $webhook2['headers']['status-code']); + + $webhook3 = $this->createWebhook( + ID::unique(), + 'List Webhook Gamma', + ['users.*.create', 'users.*.delete'], + true, + 'https://appwrite.io/gamma', + false, + null, + null + ); + $this->assertEquals(201, $webhook3['headers']['status-code']); + + // List all + $list = $this->listWebhooks(null, true); + + $this->assertEquals(200, $list['headers']['status-code']); + $this->assertGreaterThanOrEqual(3, $list['body']['total']); + $this->assertGreaterThanOrEqual(3, \count($list['body']['webhooks'])); + $this->assertIsArray($list['body']['webhooks']); + + // Verify structure of returned webhooks + foreach ($list['body']['webhooks'] as $webhook) { + $this->assertArrayHasKey('$id', $webhook); + $this->assertArrayHasKey('$createdAt', $webhook); + $this->assertArrayHasKey('$updatedAt', $webhook); + $this->assertArrayHasKey('name', $webhook); + $this->assertArrayHasKey('url', $webhook); + $this->assertArrayHasKey('events', $webhook); + $this->assertArrayHasKey('security', $webhook); + $this->assertArrayHasKey('enabled', $webhook); + $this->assertArrayHasKey('signatureKey', $webhook); + $this->assertArrayHasKey('attempts', $webhook); + $this->assertArrayHasKey('logs', $webhook); } - $this->assertEventually(function () use ($projectId, $webhookId) { - $webhook = $this->client->call(Client::METHOD_GET, '/projects/' . $projectId . '/webhooks/' . $webhookId, array_merge([ - 'origin' => 'http://localhost', - 'content-type' => 'application/json', - 'cookie' => 'a_session_console=' . $this->getRoot()['session'], - 'x-appwrite-project' => 'console', - ])); + // Cleanup + $this->deleteWebhook($webhook1['body']['$id']); + $this->deleteWebhook($webhook2['body']['$id']); + $this->deleteWebhook($webhook3['body']['$id']); + } - // assert that the webhook is now disabled after 10 consecutive failures - $this->assertEquals($webhook['body']['enabled'], false); - $this->assertEquals($webhook['body']['attempts'], 10); - }, 15000, 500); + public function testListWebhooksWithLimit(): void + { + $webhook1 = $this->createWebhook( + ID::unique(), + 'Limit Webhook 1', + ['users.*.create'], + null, + 'https://appwrite.io/one', + null, + null, + null + ); + $this->assertEquals(201, $webhook1['headers']['status-code']); + + $webhook2 = $this->createWebhook( + ID::unique(), + 'Limit Webhook 2', + ['users.*.create'], + null, + 'https://appwrite.io/two', + null, + null, + null + ); + $this->assertEquals(201, $webhook2['headers']['status-code']); + + // List with limit of 1 + $list = $this->listWebhooks([ + Query::limit(1)->toString(), + ], true); + + $this->assertEquals(200, $list['headers']['status-code']); + $this->assertCount(1, $list['body']['webhooks']); + $this->assertGreaterThanOrEqual(2, $list['body']['total']); + + // Cleanup + $this->deleteWebhook($webhook1['body']['$id']); + $this->deleteWebhook($webhook2['body']['$id']); + } + + public function testListWebhooksWithOffset(): void + { + $webhook1 = $this->createWebhook( + ID::unique(), + 'Offset Webhook 1', + ['users.*.create'], + null, + 'https://appwrite.io/one', + null, + null, + null + ); + $this->assertEquals(201, $webhook1['headers']['status-code']); + + $webhook2 = $this->createWebhook( + ID::unique(), + 'Offset Webhook 2', + ['users.*.create'], + null, + 'https://appwrite.io/two', + null, + null, + null + ); + $this->assertEquals(201, $webhook2['headers']['status-code']); + + // List all to get total + $listAll = $this->listWebhooks(null, true); + $this->assertEquals(200, $listAll['headers']['status-code']); + $totalAll = \count($listAll['body']['webhooks']); + + // List with offset + $listOffset = $this->listWebhooks([ + Query::offset(1)->toString(), + ], true); + + $this->assertEquals(200, $listOffset['headers']['status-code']); + $this->assertCount($totalAll - 1, $listOffset['body']['webhooks']); + + // Cleanup + $this->deleteWebhook($webhook1['body']['$id']); + $this->deleteWebhook($webhook2['body']['$id']); + } + + public function testListWebhooksFilterByName(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'UniqueFilterName-XYZ', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + $this->assertEquals(201, $webhook['headers']['status-code']); + + $list = $this->listWebhooks([ + Query::equal('name', ['UniqueFilterName-XYZ'])->toString(), + ], true); + + $this->assertEquals(200, $list['headers']['status-code']); + $this->assertEquals(1, $list['body']['total']); + $this->assertCount(1, $list['body']['webhooks']); + $this->assertEquals('UniqueFilterName-XYZ', $list['body']['webhooks'][0]['name']); + + // Cleanup + $this->deleteWebhook($webhook['body']['$id']); + } + + public function testListWebhooksFilterByEnabled(): void + { + $webhookEnabled = $this->createWebhook( + ID::unique(), + 'Enabled Filter Webhook', + ['users.*.create'], + true, + 'https://appwrite.io/enabled', + null, + null, + null + ); + $this->assertEquals(201, $webhookEnabled['headers']['status-code']); + + $webhookDisabled = $this->createWebhook( + ID::unique(), + 'Disabled Filter Webhook', + ['users.*.create'], + false, + 'https://appwrite.io/disabled', + null, + null, + null + ); + $this->assertEquals(201, $webhookDisabled['headers']['status-code']); + + // Filter by enabled=true + $listEnabled = $this->listWebhooks([ + Query::equal('enabled', [true])->toString(), + ], true); + + $this->assertEquals(200, $listEnabled['headers']['status-code']); + $this->assertGreaterThanOrEqual(1, $listEnabled['body']['total']); + foreach ($listEnabled['body']['webhooks'] as $webhook) { + $this->assertEquals(true, $webhook['enabled']); + } + + // Filter by enabled=false + $listDisabled = $this->listWebhooks([ + Query::equal('enabled', [false])->toString(), + ], true); + + $this->assertEquals(200, $listDisabled['headers']['status-code']); + $this->assertGreaterThanOrEqual(1, $listDisabled['body']['total']); + foreach ($listDisabled['body']['webhooks'] as $webhook) { + $this->assertEquals(false, $webhook['enabled']); + } + + // Cleanup + $this->deleteWebhook($webhookEnabled['body']['$id']); + $this->deleteWebhook($webhookDisabled['body']['$id']); + } + + public function testListWebhooksFilterByUrl(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'URL Filter Webhook', + ['users.*.create'], + null, + 'https://appwrite.io/unique-url-filter', + null, + null, + null + ); + $this->assertEquals(201, $webhook['headers']['status-code']); + + $list = $this->listWebhooks([ + Query::equal('url', ['https://appwrite.io/unique-url-filter'])->toString(), + ], true); + + $this->assertEquals(200, $list['headers']['status-code']); + $this->assertEquals(1, $list['body']['total']); + $this->assertCount(1, $list['body']['webhooks']); + $this->assertEquals('https://appwrite.io/unique-url-filter', $list['body']['webhooks'][0]['url']); + + // Cleanup + $this->deleteWebhook($webhook['body']['$id']); + } + + public function testListWebhooksFilterBySecurity(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Security Filter Webhook', + ['users.*.create'], + null, + 'https://appwrite.io/sec', + true, + null, + null + ); + $this->assertEquals(201, $webhook['headers']['status-code']); + + $list = $this->listWebhooks([ + Query::equal('security', [true])->toString(), + ], true); + + $this->assertEquals(200, $list['headers']['status-code']); + $this->assertGreaterThanOrEqual(1, $list['body']['total']); + foreach ($list['body']['webhooks'] as $w) { + $this->assertEquals(true, $w['security']); + } + + // Cleanup + $this->deleteWebhook($webhook['body']['$id']); + } + + public function testListWebhooksWithoutTotal(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'No Total Webhook', + ['users.*.create'], + null, + 'https://appwrite.io/nototal', + null, + null, + null + ); + $this->assertEquals(201, $webhook['headers']['status-code']); + + // List with total=false + $list = $this->listWebhooks(null, false); + + $this->assertEquals(200, $list['headers']['status-code']); + $this->assertEquals(0, $list['body']['total']); + $this->assertGreaterThanOrEqual(1, \count($list['body']['webhooks'])); + + // Cleanup + $this->deleteWebhook($webhook['body']['$id']); + } + + public function testListWebhooksCursorPagination(): void + { + $webhook1 = $this->createWebhook( + ID::unique(), + 'Cursor Webhook 1', + ['users.*.create'], + null, + 'https://appwrite.io/cursor1', + null, + null, + null + ); + $this->assertEquals(201, $webhook1['headers']['status-code']); + + $webhook2 = $this->createWebhook( + ID::unique(), + 'Cursor Webhook 2', + ['users.*.create'], + null, + 'https://appwrite.io/cursor2', + null, + null, + null + ); + $this->assertEquals(201, $webhook2['headers']['status-code']); + + // Get first page with limit 1 + $page1 = $this->listWebhooks([ + Query::limit(1)->toString(), + ], true); + + $this->assertEquals(200, $page1['headers']['status-code']); + $this->assertCount(1, $page1['body']['webhooks']); + $cursorId = $page1['body']['webhooks'][0]['$id']; + + // Get next page using cursor + $page2 = $this->listWebhooks([ + Query::limit(1)->toString(), + Query::cursorAfter(new Document(['$id' => $cursorId]))->toString(), + ], true); + + $this->assertEquals(200, $page2['headers']['status-code']); + $this->assertCount(1, $page2['body']['webhooks']); + $this->assertNotEquals($cursorId, $page2['body']['webhooks'][0]['$id']); + + // Cleanup + $this->deleteWebhook($webhook1['body']['$id']); + $this->deleteWebhook($webhook2['body']['$id']); + } + + public function testListWebhooksWithoutAuthentication(): void + { + $response = $this->client->call(Client::METHOD_GET, '/webhooks', [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ]); + + $this->assertEquals(401, $response['headers']['status-code']); + } + + public function testListWebhooksInvalidCursor(): void + { + $list = $this->listWebhooks([ + Query::cursorAfter(new Document(['$id' => 'non-existent-id']))->toString(), + ], true); + + $this->assertEquals(400, $list['headers']['status-code']); + } + + // Delete webhook tests + + public function testDeleteWebhook(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Delete Test Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; + + // Verify it exists + $get = $this->getWebhook($webhookId); + $this->assertEquals(200, $get['headers']['status-code']); + + // Delete + $delete = $this->deleteWebhook($webhookId); + $this->assertEquals(204, $delete['headers']['status-code']); + $this->assertEmpty($delete['body']); + + // Verify it no longer exists + $get = $this->getWebhook($webhookId); + $this->assertEquals(404, $get['headers']['status-code']); + $this->assertEquals('webhook_not_found', $get['body']['type']); + } + + public function testDeleteWebhookNotFound(): void + { + $delete = $this->deleteWebhook('non-existent-id'); + + $this->assertEquals(404, $delete['headers']['status-code']); + $this->assertEquals('webhook_not_found', $delete['body']['type']); + } + + public function testDeleteWebhookWithoutAuthentication(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Delete Auth Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; + + // Attempt DELETE without authentication + $response = $this->client->call(Client::METHOD_DELETE, '/webhooks/' . $webhookId, [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ]); + + $this->assertEquals(401, $response['headers']['status-code']); + + // Verify it still exists + $get = $this->getWebhook($webhookId); + $this->assertEquals(200, $get['headers']['status-code']); + + // Cleanup + $this->deleteWebhook($webhookId); + } + + public function testDeleteWebhookRemovedFromList(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Delete List Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; + + // Get list count before delete + $listBefore = $this->listWebhooks(null, true); + $this->assertEquals(200, $listBefore['headers']['status-code']); + $countBefore = $listBefore['body']['total']; + + // Delete + $delete = $this->deleteWebhook($webhookId); + $this->assertEquals(204, $delete['headers']['status-code']); + + // Get list count after delete + $listAfter = $this->listWebhooks(null, true); + $this->assertEquals(200, $listAfter['headers']['status-code']); + $this->assertEquals($countBefore - 1, $listAfter['body']['total']); + + // Verify the deleted webhook is not in the list + $ids = \array_column($listAfter['body']['webhooks'], '$id'); + $this->assertNotContains($webhookId, $ids); + } + + public function testDeleteWebhookDoubleDelete(): void + { + $webhook = $this->createWebhook( + ID::unique(), + 'Double Delete Webhook', + ['users.*.create'], + null, + 'https://appwrite.io', + null, + null, + null + ); + + $this->assertEquals(201, $webhook['headers']['status-code']); + $webhookId = $webhook['body']['$id']; + + // First delete succeeds + $delete = $this->deleteWebhook($webhookId); + $this->assertEquals(204, $delete['headers']['status-code']); + + // Second delete returns 404 + $delete = $this->deleteWebhook($webhookId); + $this->assertEquals(404, $delete['headers']['status-code']); + $this->assertEquals('webhook_not_found', $delete['body']['type']); + } + + // Helpers + + /** + * @param array|null $queries + */ + protected function listWebhooks(?array $queries, ?bool $total): mixed + { + $webhooks = $this->client->call(Client::METHOD_GET, '/webhooks', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'queries' => $queries, + 'total' => $total + ]); + + return $webhooks; + } + + protected function getWebhook(string $webhookId): mixed + { + $webhook = $this->client->call(Client::METHOD_GET, '/webhooks/' . $webhookId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders())); + + return $webhook; + } + + protected function createWebhook(string $webhookId, string $name, array $events, ?bool $enabled, ?string $url, ?bool $security, ?string $httpUser, ?string $httpPass): mixed + { + $params = [ + 'webhookId' => $webhookId, + 'name' => $name, + 'events' => $events, + 'url' => $url, + ]; + + if ($enabled !== null) { + $params['enabled'] = $enabled; + } + if ($security !== null) { + $params['security'] = $security; + } + if ($httpUser !== null) { + $params['httpUser'] = $httpUser; + } + if ($httpPass !== null) { + $params['httpPass'] = $httpPass; + } + + $webhook = $this->client->call(Client::METHOD_POST, '/webhooks', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), $params); + + return $webhook; + } + + protected function updateWebhook(string $webhookId, string $name, array $events, ?bool $enabled, ?string $url, ?bool $security, ?string $httpUser, ?string $httpPass): mixed + { + $params = [ + 'name' => $name, + 'events' => $events, + 'url' => $url, + ]; + + if ($enabled !== null) { + $params['enabled'] = $enabled; + } + if ($security !== null) { + $params['security'] = $security; + } + if ($httpUser !== null) { + $params['httpUser'] = $httpUser; + } + if ($httpPass !== null) { + $params['httpPass'] = $httpPass; + } + + $webhook = $this->client->call(Client::METHOD_PUT, '/webhooks/' . $webhookId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), $params); + + return $webhook; + } + + protected function updateWebhookSignature(string $webhookId): mixed + { + $webhook = $this->client->call(Client::METHOD_PATCH, '/webhooks/' . $webhookId . '/signature', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders())); + + return $webhook; + } + + protected function deleteWebhook(string $webhookId): mixed + { + $webhook = $this->client->call(Client::METHOD_DELETE, '/webhooks/' . $webhookId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders())); + + return $webhook; } } diff --git a/tests/e2e/Services/Webhooks/WebhooksConsoleClientTest.php b/tests/e2e/Services/Webhooks/WebhooksConsoleClientTest.php new file mode 100644 index 0000000000..b954ef8600 --- /dev/null +++ b/tests/e2e/Services/Webhooks/WebhooksConsoleClientTest.php @@ -0,0 +1,14 @@ +client->call(Client::METHOD_POST, '/users', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'userId' => ID::unique(), - 'email' => $email, - 'password' => $password, - 'name' => $name, - ]); - - return [ - 'userId' => $user['body']['$id'], - 'name' => $user['body']['name'], - 'email' => $user['body']['email'], - ]; - } - - /** - * Creates a function and returns function details. - * - * @return array Array containing 'functionId' - */ - protected function setupFunction(): array - { - $function = $this->client->call(Client::METHOD_POST, '/functions', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'functionId' => ID::unique(), - 'name' => 'Test', - 'execute' => [Role::any()->toString()], - 'runtime' => 'node-22', - 'entrypoint' => 'index.js', - 'timeout' => 10, - ]); - - return ['functionId' => $function['body']['$id']]; - } - - /** - * Creates a function deployment and waits for it to be built. - * - * @param string $functionId Function ID - * @return array Array containing 'functionId', 'deploymentId' - */ - protected function setupDeployment(string $functionId): array - { - $stderr = ''; - $stdout = ''; - $folder = 'timeout'; - $code = realpath(__DIR__ . '/../../../resources/functions') . "/{$folder}/code.tar.gz"; - Console::execute('cd ' . realpath(__DIR__ . "/../../../resources/functions") . "/{$folder} && tar --exclude code.tar.gz -czf code.tar.gz .", '', $stdout, $stderr); - - // Create variable first - $this->client->call(Client::METHOD_POST, '/functions/' . $functionId . '/variables', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'key' => 'key1', - 'value' => 'value1', - ]); - - $deployment = $this->client->call(Client::METHOD_POST, '/functions/' . $functionId . '/deployments', array_merge([ - 'content-type' => 'multipart/form-data', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'entrypoint' => 'index.js', - 'code' => new CURLFile($code, 'application/x-gzip', \basename($code)), - 'activate' => true - ]); - - $deploymentId = $deployment['body']['$id']; - - // Wait for deployment to be built - $this->awaitDeploymentIsBuilt($functionId, $deploymentId); - - return [ - 'functionId' => $functionId, - 'deploymentId' => $deploymentId, - ]; - } - - // Collection APIs - public function testUpdateCollection(): void - { - // Set up collection with attributes - $data = $this->setupCollectionWithAttributes(); - $id = $data['actorsId']; - $databaseId = $data['databaseId']; - - /** - * Test for SUCCESS - */ - $actors = $this->client->call(Client::METHOD_PUT, '/databases/' . $databaseId . '/collections/' . $id, array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'name' => 'Actors1', - 'documentSecurity' => true, - ]); - - $this->assertEquals(200, $actors['headers']['status-code']); - $this->assertNotEmpty($actors['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$id}.update")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$id}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertTrue(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? '')); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals('Actors1', $webhook['data']['name']); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertCount(4, $webhook['data']['$permissions']); - } - - public function testCreateDeleteIndexes(): void - { - // Set up collection with attributes - $data = $this->setupCollectionWithAttributes(); - $actorsId = $data['actorsId']; - $databaseId = $data['databaseId']; - - $index = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $actorsId . '/indexes', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'key' => 'fullname', - 'type' => 'key', - 'attributes' => ['lastName', 'firstName'], - 'orders' => ['ASC', 'ASC'], - ]); - - $indexKey = $index['body']['key']; - $this->assertEquals(202, $index['headers']['status-code']); - $this->assertEquals('fullname', $index['body']['key']); - - // wait for database worker to create index - $this->assertEventually(function () use ($databaseId, $actorsId) { - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.indexes.*.create")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.indexes.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.indexes.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.indexes.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.indexes.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertTrue(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? '')); - }, 10000, 500); - - // Remove index - $this->client->call(Client::METHOD_DELETE, '/databases/' . $databaseId . '/collections/' . $actorsId . '/indexes/' . $index['body']['key'], array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ])); - - // // wait for database worker to remove index - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$actorsId}.indexes.*.update")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - // $this->assertEquals($webhook['method'], 'DELETE'); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.indexes.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.indexes.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.indexes.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$actorsId}.indexes.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertTrue(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? '')); - } - - public function testDeleteCollection(): void - { - /** - * Create database - */ - $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ], $this->getHeaders()), [ - 'databaseId' => ID::unique(), - 'name' => 'Actors DB', - ]); - - $databaseId = $database['body']['$id']; - - /** - * Test for SUCCESS - */ - $actors = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'collectionId' => ID::unique(), - 'name' => 'Demo', - 'permissions' => [ - Permission::read(Role::any()), - Permission::create(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - 'documentSecurity' => true, - ]); - - $id = $actors['body']['$id']; - - $this->assertEquals(201, $actors['headers']['status-code']); - $this->assertNotEmpty($actors['body']['$id']); - - $actors = $this->client->call(Client::METHOD_DELETE, '/databases/' . $databaseId . '/collections/' . $actors['body']['$id'], array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), []); - - $this->assertEquals(204, $actors['headers']['status-code']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.collections.{$id}.delete")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.collections.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.collections.{$id}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertTrue(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? '')); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals('Demo', $webhook['data']['name']); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertCount(4, $webhook['data']['$permissions']); - } - - // Table APIs - public function testUpdateTable(): void - { - // Set up table with columns - $data = $this->setupTableWithColumns(); - $id = $data['actorsId']; - $databaseId = $data['databaseId']; - - /** - * Test for SUCCESS - */ - $actors = $this->client->call(Client::METHOD_PUT, '/tablesdb/' . $databaseId . '/tables/' . $id, array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'name' => 'Actors1', - 'rowSecurity' => true, - ]); - - $this->assertEquals(200, $actors['headers']['status-code']); - $this->assertNotEmpty($actors['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$id}.update")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$id}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEmpty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals('Actors1', $webhook['data']['name']); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertCount(4, $webhook['data']['$permissions']); - } - - public function testCreateDeleteColumnIndexes(): void - { - // Set up table with columns - $data = $this->setupTableWithColumns(); - $actorsId = $data['actorsId']; - $databaseId = $data['databaseId']; - - $index = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/indexes', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'key' => 'fullname', - 'type' => 'key', - 'columns' => ['lastName', 'firstName'], - 'orders' => ['ASC', 'ASC'], - ]); - - $this->assertEquals(202, $index['headers']['status-code']); - $this->assertEquals('fullname', $index['body']['key']); - - // wait for database worker to create index - $this->assertEventually(function () use ($databaseId, $actorsId) { - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.indexes.*.create")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.indexes.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.indexes.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.indexes.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.indexes.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertTrue(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? '')); - }, 10000, 500); - - // Remove index - $this->client->call(Client::METHOD_DELETE, '/tablesdb/' . $databaseId . '/tables/' . $actorsId . '/indexes/' . $index['body']['key'], array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ])); - - // // wait for database worker to remove index - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$actorsId}.indexes.*.update")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - // $this->assertEquals($webhook['method'], 'DELETE'); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.indexes.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.indexes.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.indexes.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$actorsId}.indexes.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertTrue(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? '')); - } - - public function testDeleteTable(): void - { - /** - * Create database - */ - $database = $this->client->call(Client::METHOD_POST, '/databases', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ], $this->getHeaders()), [ - 'databaseId' => ID::unique(), - 'name' => 'Actors DB', - ]); - - $databaseId = $database['body']['$id']; - - /** - * Test for SUCCESS - */ - $actors = $this->client->call(Client::METHOD_POST, '/tablesdb/' . $databaseId . '/tables', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ]), [ - 'tableId' => ID::unique(), - 'name' => 'Demo', - 'permissions' => [ - Permission::read(Role::any()), - Permission::create(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - 'rowSecurity' => true, - ]); - - $id = $actors['body']['$id']; - - $this->assertEquals(201, $actors['headers']['status-code']); - $this->assertNotEmpty($actors['body']['$id']); - - $actors = $this->client->call(Client::METHOD_DELETE, '/tablesdb/' . $databaseId . '/tables/' . $actors['body']['$id'], array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - 'x-appwrite-key' => $this->getProject()['apiKey'] - ])); - - $this->assertEquals(204, $actors['headers']['status-code']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("databases.{$databaseId}.tables.{$id}.delete")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('databases.' . $databaseId . '.tables.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("databases.{$databaseId}.tables.{$id}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEmpty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals('Demo', $webhook['data']['name']); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertCount(4, $webhook['data']['$permissions']); - } - - public function testCreateUser(): void - { - $email = uniqid() . 'user@localhost.test'; - $password = 'password'; - $name = 'User Name'; - - /** - * Test for SUCCESS - */ - $user = $this->client->call(Client::METHOD_POST, '/users', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'userId' => ID::unique(), - 'email' => $email, - 'password' => $password, - 'name' => $name, - ]); - - $this->assertEquals(201, $user['headers']['status-code']); - $this->assertNotEmpty($user['body']['$id']); - - $id = $user['body']['$id']; - - $webhook = $this->getLastRequest($this->webhookEventProbe("users.{$id}.create")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - $this->assertStringContainsString('users.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('users.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("users.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("users.{$id}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals($webhook['data']['name'], $name); - $this->assertTrue((new DatetimeValidator())->isValid($webhook['data']['registration'])); - $this->assertTrue($webhook['data']['status']); - $this->assertEquals($webhook['data']['email'], $email); - $this->assertFalse($webhook['data']['emailVerification']); - $this->assertEquals([], $webhook['data']['prefs']); - } - - public function testUpdateUserPrefs(): void - { - // Set up a user - $data = $this->setupUser(); - $id = $data['userId']; - - /** - * Test for SUCCESS - */ - $user = $this->client->call(Client::METHOD_PATCH, '/users/' . $id . '/prefs', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'prefs' => ['a' => 'b'] - ]); - - $this->assertEquals(200, $user['headers']['status-code']); - $this->assertEquals('b', $user['body']['a']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("users.{$id}.update.prefs")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - $this->assertStringContainsString('users.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('users.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('users.*.update.prefs', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("users.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("users.{$id}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("users.{$id}.update.prefs", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertEquals('b', $webhook['data']['a']); - } - - public function testUpdateUserStatus(): void - { - // Set up a user - $data = $this->setupUser(); - $id = $data['userId']; - - /** - * Test for SUCCESS - */ - $user = $this->client->call(Client::METHOD_PATCH, '/users/' . $data['userId'] . '/status', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'status' => false, - ]); - - $this->assertEquals(200, $user['headers']['status-code']); - $this->assertNotEmpty($user['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("users.{$id}.update.status")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - $this->assertStringContainsString('users.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('users.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('users.*.update.status', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("users.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("users.{$id}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("users.{$id}.update.status", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals($webhook['data']['name'], $data['name']); - $this->assertTrue((new DatetimeValidator())->isValid($webhook['data']['registration'])); - $this->assertFalse($webhook['data']['status']); - $this->assertEquals($webhook['data']['email'], $data['email']); - $this->assertFalse($webhook['data']['emailVerification']); - } - - public function testDeleteUser(): void - { - // Set up a user - $data = $this->setupUser(); - $id = $data['userId']; - - /** - * Test for SUCCESS - */ - $user = $this->client->call(Client::METHOD_DELETE, '/users/' . $data['userId'], array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders())); - - $this->assertEquals(204, $user['headers']['status-code']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("users.{$id}.delete")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - $this->assertStringContainsString('users.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString('users.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("users.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertStringContainsString("users.{$id}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); - $this->assertNotEmpty($webhook['data']['$id']); - $this->assertEquals($webhook['data']['name'], $data['name']); - $this->assertTrue((new DatetimeValidator())->isValid($webhook['data']['registration'])); - // User is created with status=true by default, so webhook shows that status at deletion - $this->assertTrue($webhook['data']['status']); - $this->assertEquals($webhook['data']['email'], $data['email']); - $this->assertFalse($webhook['data']['emailVerification']); - } - - public function testCreateFunction(): void - { - /** - * Test for SUCCESS - */ - $function = $this->client->call(Client::METHOD_POST, '/functions', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'functionId' => ID::unique(), - 'name' => 'Test', - 'execute' => [Role::any()->toString()], - 'runtime' => 'node-22', - 'entrypoint' => 'index.js', - 'timeout' => 10, - ]); - - $id = $function['body']['$id'] ?? ''; - - $this->assertEquals(201, $function['headers']['status-code']); - $this->assertNotEmpty($function['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$id}.create")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - } - - public function testUpdateFunction(): void - { - // Set up a function - $data = $this->setupFunction(); - $id = $data['functionId']; - - /** - * Test for SUCCESS - */ - $function = $this->client->call(Client::METHOD_PUT, '/functions/' . $id, array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'name' => 'Test', - 'runtime' => 'node-22', - 'entrypoint' => 'index.js', - 'execute' => [Role::any()->toString()], - 'vars' => [ - 'key1' => 'value1', - ] - ]); - - $this->assertEquals(200, $function['headers']['status-code']); - $this->assertEquals($function['body']['$id'], $id); - - // Create variable - $variable = $this->client->call(Client::METHOD_POST, '/functions/' . $id . '/variables', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'key' => 'key1', - 'value' => 'value1', - ]); - - $this->assertEquals(201, $variable['headers']['status-code']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$id}.update")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - // $this->assertStringContainsString('functions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString('functions.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); TODO @christyjacob4 : enable test once we allow functions.* events - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - } - - public function testCreateDeployment(): void - { - // Set up a function - $data = $this->setupFunction(); - $functionId = $data['functionId']; - - /** - * Test for SUCCESS - */ - $stderr = ''; - $stdout = ''; - $folder = 'timeout'; - $code = realpath(__DIR__ . '/../../../resources/functions') . "/{$folder}/code.tar.gz"; - Console::execute('cd ' . realpath(__DIR__ . "/../../../resources/functions") . "/{$folder} && tar --exclude code.tar.gz -czf code.tar.gz .", '', $stdout, $stderr); - - $deployment = $this->client->call(Client::METHOD_POST, '/functions/' . $functionId . '/deployments', array_merge([ - 'content-type' => 'multipart/form-data', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'entrypoint' => 'index.js', - 'code' => new CURLFile($code, 'application/x-gzip', \basename($code)), - 'activate' => true - ]); - - $deploymentId = $deployment['body']['$id'] ?? ''; - - $this->assertEquals(202, $deployment['headers']['status-code']); - $this->assertNotEmpty($deployment['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$functionId}.deployments.{$deploymentId}.create")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - // $this->assertStringContainsString('functions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString('functions.*.deployments.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.*.deployments.{$deploymentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.deployments.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.deployments.{$deploymentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); TODO @christyjacob4 : enable test once we allow functions.* events - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - - $this->awaitDeploymentIsBuilt($functionId, $deploymentId); - } - - public function testUpdateDeployment(): void - { - // Set up a function with deployment - $data = $this->setupFunction(); - $deploymentData = $this->setupDeployment($data['functionId']); - $id = $deploymentData['functionId']; - $deploymentId = $deploymentData['deploymentId']; - - /** - * Test for SUCCESS - */ - $response = $this->client->call(Client::METHOD_PATCH, '/functions/' . $id . '/deployments/' . $deploymentId, array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), []); - - $this->assertEquals(200, $response['headers']['status-code']); - $this->assertNotEmpty($response['body']['$id']); - - // Wait for deployment to be built. - $this->assertEventually(function () use ($deploymentId, $id) { - $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$id}.deployments.{$deploymentId}.update")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - // $this->assertStringContainsString('functions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString('functions.*.deployments.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString('functions.*.deployments.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.*.deployments.{$deploymentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.*.deployments.{$deploymentId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.deployments.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.deployments.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.deployments.{$deploymentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.deployments.{$deploymentId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); TODO @christyjacob4 : enable test once we allow functions.* events - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - }, 10000, 500); - - } - - public function testExecutions(): void - { - // Set up a function with deployment - $data = $this->setupFunction(); - $deploymentData = $this->setupDeployment($data['functionId']); - $id = $deploymentData['functionId']; - - /** - * Test for SUCCESS - */ - $execution = $this->client->call(Client::METHOD_POST, '/functions/' . $id . '/executions', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'async' => true - ]); - - $executionId = $execution['body']['$id'] ?? ''; - - $this->assertEquals(202, $execution['headers']['status-code']); - $this->assertNotEmpty($execution['body']['$id']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$id}.executions.{$executionId}.create")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - // $this->assertStringContainsString('functions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString('functions.*.executions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString('functions.*.executions.*.create', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.*.executions.{$executionId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.*.executions.{$executionId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.executions.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.executions.*.create", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.executions.{$executionId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.executions.{$executionId}.create", $webhook['headers']['X-Appwrite-Webhook-Events']); TODO @christyjacob4 : enable test once we allow functions.* events - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - - // wait for timeout function to complete - $this->assertEventually(function () use ($executionId, $id) { - $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$id}.executions.{$executionId}.update")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - // $this->assertStringContainsString('functions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString('functions.*.executions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString('functions.*.executions.*.update', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.*.executions.{$executionId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.*.executions.{$executionId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.executions.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.executions.*.update", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.executions.{$executionId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.executions.{$executionId}.update", $webhook['headers']['X-Appwrite-Webhook-Events']); TODO @christyjacob4 : enable test once we allow functions.* events - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - }, 30000, 500); - } - - public function testDeleteDeployment(): void - { - // Set up a function with deployment - $data = $this->setupFunction(); - $deploymentData = $this->setupDeployment($data['functionId']); - $id = $deploymentData['functionId']; - $deploymentId = $deploymentData['deploymentId']; - /** - * Test for SUCCESS - */ - $deployment = $this->client->call(Client::METHOD_DELETE, '/functions/' . $id . '/deployments/' . $deploymentId, array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders())); - - $this->assertEquals(204, $deployment['headers']['status-code']); - $this->assertEmpty($deployment['body']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$id}.deployments.{$deploymentId}.delete")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - // $this->assertStringContainsString('functions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString('functions.*.deployments.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString('functions.*.deployments.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.*.deployments.{$deploymentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.*.deployments.{$deploymentId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.deployments.*", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.deployments.*.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.deployments.{$deploymentId}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.deployments.{$deploymentId}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); TODO @christyjacob4 : enable test once we allow functions.* events - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - } - - public function testDeleteFunction(): void - { - // Set up a function - $data = $this->setupFunction(); - $id = $data['functionId']; - - /** - * Test for SUCCESS - */ - $function = $this->client->call(Client::METHOD_DELETE, '/functions/' . $id, array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders())); - - $this->assertEquals(204, $function['headers']['status-code']); - $this->assertEmpty($function['body']); - - $webhook = $this->getLastRequest($this->webhookEventProbe("functions.{$id}.delete")); - $signatureExpected = self::getWebhookSignature($webhook, $this->getProject()['signatureKey']); - - $this->assertEquals('POST', $webhook['method']); - $this->assertEquals('application/json', $webhook['headers']['Content-Type']); - $this->assertEquals('Appwrite-Server vdev. Please report abuse at security@appwrite.io', $webhook['headers']['User-Agent']); - // $this->assertStringContainsString('functions.*', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString('functions.*.delete', $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}", $webhook['headers']['X-Appwrite-Webhook-Events']); - // $this->assertStringContainsString("functions.{$id}.delete", $webhook['headers']['X-Appwrite-Webhook-Events']); TODO @christyjacob4 : enable test once we allow functions.* events - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], $signatureExpected); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); - $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); - } } diff --git a/tests/unit/Functions/Validator/HeadersBench.php b/tests/unit/Functions/Validator/HeadersBench.php deleted file mode 100644 index f95fa65f9b..0000000000 --- a/tests/unit/Functions/Validator/HeadersBench.php +++ /dev/null @@ -1,60 +0,0 @@ -validator = new Headers(); - } - - public function providers(): iterable - { - yield 'empty' => [ 'value' => [] ]; - - $value = []; - for ($i = 0; $i < 10; $i++) { - $value[bin2hex(random_bytes(8))] = bin2hex(random_bytes(8)); - } - yield 'items_10-size_320' => [ 'value' => $value ]; - - $value = []; - for ($i = 0; $i < 100; $i++) { - $value[bin2hex(random_bytes(8))] = bin2hex(random_bytes(8)); - } - yield 'items_100-size_3200' => [ 'value' => $value ]; - - $value = []; - for ($i = 0; $i < 100; $i++) { - $value[bin2hex(random_bytes(32))] = bin2hex(random_bytes(32)); - } - yield 'items_100-size_12800' => [ 'value' => $value ]; - } - - #[BeforeMethods('prepare')] - #[AfterMethods('tearDown')] - #[ParamProviders('providers')] - #[Iterations(50)] - #[Assert('mode(variant.time.avg) < 1 ms')] - public function benchHeadersValidator(array $data): void - { - $assertion = $this->validator->isValid($data['value']); - if (!$assertion) { - exit(1); - } - } -} diff --git a/tests/unit/Network/Validators/OriginTest.php b/tests/unit/Network/Validators/OriginTest.php index 7a19daecbf..64ce71951b 100644 --- a/tests/unit/Network/Validators/OriginTest.php +++ b/tests/unit/Network/Validators/OriginTest.php @@ -73,6 +73,10 @@ class OriginTest extends TestCase $this->assertEquals(false, $validator->isValid('ms-browser-extension://com.company.appname')); $this->assertEquals('Invalid Origin. Register your new client (com.company.appname) as a new Web (Edge Extension) platform on your project console dashboard', $validator->getDescription()); + $this->assertEquals(true, $validator->isValid('tauri://localhost')); + $this->assertEquals(false, $validator->isValid('tauri://example.com')); + $this->assertEquals('Invalid Origin. Register your new client (example.com) as a new Web (Tauri) platform on your project console dashboard', $validator->getDescription()); + $this->assertEquals(false, $validator->isValid('random-scheme://localhost')); $this->assertEquals('Invalid Scheme. The scheme used (random-scheme) in the Origin (random-scheme://localhost) is not supported. If you are using a custom scheme, please change it to `appwrite-callback-`', $validator->getDescription()); } diff --git a/tests/unit/Platform/Modules/Installer/ModuleTest.php b/tests/unit/Platform/Modules/Installer/ModuleTest.php new file mode 100644 index 0000000000..8df452d8de --- /dev/null +++ b/tests/unit/Platform/Modules/Installer/ModuleTest.php @@ -0,0 +1,291 @@ +module = new Module(); + } + + protected function tearDown(): void + { + $this->module = null; + } + + public function testModuleHasHttpService(): void + { + $services = $this->module->getServicesByType(Service::TYPE_HTTP); + $this->assertCount(1, $services); + } + + public function testHttpServiceRegistersAllActions(): void + { + $services = $this->module->getServicesByType(Service::TYPE_HTTP); + $service = reset($services); + $actions = $service->getActions(); + + $this->assertCount(6, $actions); + $this->assertArrayHasKey('installerView', $actions); + $this->assertArrayHasKey('installerStatus', $actions); + $this->assertArrayHasKey('installerValidate', $actions); + $this->assertArrayHasKey('installerComplete', $actions); + $this->assertArrayHasKey('installerShutdown', $actions); + $this->assertArrayHasKey('installerInstall', $actions); + } + + public function testViewAction(): void + { + $action = $this->getAction('installerView'); + + $this->assertEquals('installerView', View::getName()); + $this->assertEquals(Action::HTTP_REQUEST_METHOD_GET, $action->getHttpMethod()); + $this->assertEquals('/', $action->getHttpPath()); + $this->assertEquals(Action::TYPE_DEFAULT, $action->getType()); + $this->assertActionParams($action, ['step', 'partial']); + $this->assertActionInjects($action, ['request', 'response', 'installerConfig', 'installerPaths']); + } + + public function testStatusAction(): void + { + $action = $this->getAction('installerStatus'); + + $this->assertEquals('installerStatus', Status::getName()); + $this->assertEquals(Action::HTTP_REQUEST_METHOD_GET, $action->getHttpMethod()); + $this->assertEquals('/install/status', $action->getHttpPath()); + $this->assertEquals(Action::TYPE_DEFAULT, $action->getType()); + $this->assertActionParams($action, ['installId']); + $this->assertActionInjects($action, ['response', 'installerState']); + } + + public function testValidateAction(): void + { + $action = $this->getAction('installerValidate'); + + $this->assertEquals('installerValidate', Validate::getName()); + $this->assertEquals(Action::HTTP_REQUEST_METHOD_POST, $action->getHttpMethod()); + $this->assertEquals('/install/validate', $action->getHttpPath()); + $this->assertEquals(Action::TYPE_DEFAULT, $action->getType()); + $this->assertActionInjects($action, ['request', 'response']); + } + + public function testCompleteAction(): void + { + $action = $this->getAction('installerComplete'); + + $this->assertEquals('installerComplete', Complete::getName()); + $this->assertEquals(Action::HTTP_REQUEST_METHOD_POST, $action->getHttpMethod()); + $this->assertEquals('/install/complete', $action->getHttpPath()); + $this->assertEquals(Action::TYPE_DEFAULT, $action->getType()); + $this->assertActionParams($action, ['installId', 'sessionId', 'sessionSecret', 'sessionExpire']); + $this->assertActionInjects($action, ['request', 'response', 'installerState']); + } + + public function testShutdownAction(): void + { + $action = $this->getAction('installerShutdown'); + + $this->assertEquals('installerShutdown', Shutdown::getName()); + $this->assertEquals(Action::HTTP_REQUEST_METHOD_POST, $action->getHttpMethod()); + $this->assertEquals('/install/shutdown', $action->getHttpPath()); + $this->assertEquals(Action::TYPE_DEFAULT, $action->getType()); + $this->assertActionInjects($action, ['request', 'response', 'swooleServer']); + } + + public function testInstallAction(): void + { + $action = $this->getAction('installerInstall'); + + $this->assertEquals('installerInstall', Install::getName()); + $this->assertEquals(Action::HTTP_REQUEST_METHOD_POST, $action->getHttpMethod()); + $this->assertEquals('/install', $action->getHttpPath()); + $this->assertEquals(Action::TYPE_DEFAULT, $action->getType()); + $this->assertActionParams($action, [ + 'appDomain', 'httpPort', 'httpsPort', 'emailCertificates', 'opensslKey', + 'assistantOpenAIKey', 'accountEmail', 'accountPassword', 'database', + 'installId', 'retryStep', + ]); + $this->assertActionInjects($action, ['request', 'response', 'swooleResponse', 'installerState', 'installerConfig', 'installerPaths']); + } + + public function testErrorActionClass(): void + { + $error = new Error(); + + $this->assertEquals('installerError', Error::getName()); + $this->assertEquals(Action::TYPE_ERROR, $error->getType()); + $this->assertIsCallable($error->getCallback()); + } + + /** + * @runInSeparateProcess + */ + public function testRouteRegistration(): void + { + $platform = new class (new Module()) extends Platform {}; + $platform->init(Service::TYPE_HTTP); + + // If we get here without exceptions, route registration succeeded + $this->assertTrue(true); + } + + public function testModuleHasNoTaskServices(): void + { + $services = $this->module->getServicesByType(Service::TYPE_TASK); + $this->assertEmpty($services); + } + + public function testModuleHasNoWorkerServices(): void + { + $services = $this->module->getServicesByType(Service::TYPE_WORKER); + $this->assertEmpty($services); + } + + public function testAllDefaultActionsHaveDescriptions(): void + { + $services = $this->module->getServicesByType(Service::TYPE_HTTP); + $service = reset($services); + foreach ($service->getActions() as $name => $action) { + $desc = $action->getDesc(); + $this->assertNotNull($desc, "Action '$name' should have a description"); + $this->assertNotEmpty($desc, "Action '$name' description should not be empty"); + } + } + + public function testAllActionsHaveCallableCallbacks(): void + { + $services = $this->module->getServicesByType(Service::TYPE_HTTP); + $service = reset($services); + foreach ($service->getActions() as $name => $action) { + $callback = $action->getCallback(); + $this->assertIsCallable($callback, "Action '$name' callback should be callable"); + } + } + + public function testActionNamesAreUnique(): void + { + $services = $this->module->getServicesByType(Service::TYPE_HTTP); + $service = reset($services); + $actions = $service->getActions(); + $names = array_keys($actions); + $this->assertEquals($names, array_unique($names)); + } + + public function testRoutePathsAreUniquePerMethod(): void + { + $services = $this->module->getServicesByType(Service::TYPE_HTTP); + $service = reset($services); + $routes = []; + foreach ($service->getActions() as $action) { + $key = $action->getHttpMethod() . ' ' . $action->getHttpPath(); + $this->assertArrayNotHasKey($key, $routes, "Duplicate route: $key"); + $routes[$key] = true; + } + } + + public function testStaticGetNameValues(): void + { + $this->assertEquals('installerView', View::getName()); + $this->assertEquals('installerStatus', Status::getName()); + $this->assertEquals('installerValidate', Validate::getName()); + $this->assertEquals('installerComplete', Complete::getName()); + $this->assertEquals('installerShutdown', Shutdown::getName()); + $this->assertEquals('installerInstall', Install::getName()); + $this->assertEquals('installerError', Error::getName()); + } + + public function testActionInstanceTypes(): void + { + $services = $this->module->getServicesByType(Service::TYPE_HTTP); + $service = reset($services); + $actions = $service->getActions(); + + $this->assertInstanceOf(View::class, $actions['installerView']); + $this->assertInstanceOf(Status::class, $actions['installerStatus']); + $this->assertInstanceOf(Validate::class, $actions['installerValidate']); + $this->assertInstanceOf(Complete::class, $actions['installerComplete']); + $this->assertInstanceOf(Shutdown::class, $actions['installerShutdown']); + $this->assertInstanceOf(Install::class, $actions['installerInstall']); + } + + public function testGetRoutesUseGetMethod(): void + { + $getActions = ['installerView', 'installerStatus']; + foreach ($getActions as $name) { + $action = $this->getAction($name); + $this->assertEquals( + Action::HTTP_REQUEST_METHOD_GET, + $action->getHttpMethod(), + "Action '$name' should use GET method" + ); + } + } + + public function testPostRoutesUsePostMethod(): void + { + $postActions = ['installerValidate', 'installerComplete', 'installerShutdown', 'installerInstall']; + foreach ($postActions as $name) { + $action = $this->getAction($name); + $this->assertEquals( + Action::HTTP_REQUEST_METHOD_POST, + $action->getHttpMethod(), + "Action '$name' should use POST method" + ); + } + } + + public function testValidateClassHasCsrfMethod(): void + { + $this->assertTrue( + method_exists(Validate::class, 'validateCsrf'), + 'Validate class should expose validateCsrf method' + ); + } + + private function getAction(string $name): Action + { + $services = $this->module->getServicesByType(Service::TYPE_HTTP); + $service = reset($services); + $actions = $service->getActions(); + $this->assertArrayHasKey($name, $actions); + return $actions[$name]; + } + + private function assertActionInjects(Action $action, array $expectedInjections): void + { + $injections = []; + foreach ($action->getOptions() as $option) { + if ($option['type'] === 'injection') { + $injections[] = $option['name']; + } + } + $this->assertEquals($expectedInjections, $injections); + } + + private function assertActionParams(Action $action, array $expectedParams): void + { + $params = []; + foreach ($action->getOptions() as $key => $option) { + if ($option['type'] === 'param') { + $params[] = substr($key, 6); // strip 'param:' prefix + } + } + $this->assertEquals($expectedParams, $params); + } +} diff --git a/tests/unit/Platform/Modules/Installer/Runtime/ConfigTest.php b/tests/unit/Platform/Modules/Installer/Runtime/ConfigTest.php new file mode 100644 index 0000000000..113bce5277 --- /dev/null +++ b/tests/unit/Platform/Modules/Installer/Runtime/ConfigTest.php @@ -0,0 +1,554 @@ +assertEquals('80', $config->getDefaultHttpPort()); + $this->assertEquals('443', $config->getDefaultHttpsPort()); + $this->assertEquals('appwrite', $config->getOrganization()); + $this->assertEquals('appwrite', $config->getImage()); + $this->assertFalse($config->getNoStart()); + $this->assertFalse($config->isUpgrade()); + $this->assertFalse($config->isLocal()); + $this->assertNull($config->getHostPath()); + $this->assertNull($config->getLockedDatabase()); + $this->assertEquals(['mongodb', 'mariadb'], $config->getEnabledDatabases()); + $this->assertEmpty($config->getVars()); + } + + public function testConstructorWithKnownKeys(): void + { + $config = new Config([ + 'defaultHttpPort' => '8080', + 'isUpgrade' => true, + 'organization' => 'myorg', + ]); + + $this->assertEquals('8080', $config->getDefaultHttpPort()); + $this->assertTrue($config->isUpgrade()); + $this->assertEquals('myorg', $config->getOrganization()); + } + + public function testConstructorWithUnknownKeysTreatsAsVars(): void + { + $vars = [ + '_APP_ENV' => 'production', + '_APP_DOMAIN' => 'example.com', + ]; + $config = new Config($vars); + + $this->assertEquals($vars, $config->getVars()); + // Defaults should remain + $this->assertEquals('80', $config->getDefaultHttpPort()); + } + + public function testApplyAllFields(): void + { + $config = new Config(); + $config->apply([ + 'defaultHttpPort' => '3000', + 'defaultHttpsPort' => '3443', + 'organization' => 'testorg', + 'image' => 'testimage', + 'noStart' => true, + 'isUpgrade' => true, + 'isLocal' => true, + 'hostPath' => '/home/user', + 'lockedDatabase' => 'mariadb', + 'vars' => [['name' => '_APP_ENV', 'default' => 'production']], + ]); + + $this->assertEquals('3000', $config->getDefaultHttpPort()); + $this->assertEquals('3443', $config->getDefaultHttpsPort()); + $this->assertEquals('testorg', $config->getOrganization()); + $this->assertEquals('testimage', $config->getImage()); + $this->assertTrue($config->getNoStart()); + $this->assertTrue($config->isUpgrade()); + $this->assertTrue($config->isLocal()); + $this->assertEquals('/home/user', $config->getHostPath()); + $this->assertEquals('mariadb', $config->getLockedDatabase()); + $this->assertCount(1, $config->getVars()); + } + + public function testApplyIgnoresNullAndEmptyStringValues(): void + { + $config = new Config(['defaultHttpPort' => '9090']); + + $config->apply(['defaultHttpPort' => '']); + $this->assertEquals('9090', $config->getDefaultHttpPort()); + + $config->apply(['defaultHttpPort' => null]); + $this->assertEquals('9090', $config->getDefaultHttpPort()); + } + + public function testApplyHostPathCanBeSetToNull(): void + { + $config = new Config(); + $config->setHostPath('/some/path'); + $this->assertEquals('/some/path', $config->getHostPath()); + + $config->apply(['hostPath' => null]); + $this->assertNull($config->getHostPath()); + } + + public function testApplyPartialUpdate(): void + { + $config = new Config([ + 'defaultHttpPort' => '8080', + 'defaultHttpsPort' => '8443', + 'organization' => 'original', + ]); + + $config->apply(['organization' => 'updated']); + + $this->assertEquals('8080', $config->getDefaultHttpPort()); + $this->assertEquals('8443', $config->getDefaultHttpsPort()); + $this->assertEquals('updated', $config->getOrganization()); + } + + public function testToArrayRoundTrip(): void + { + $config = new Config(); + $config->apply([ + 'defaultHttpPort' => '3000', + 'defaultHttpsPort' => '3443', + 'organization' => 'testorg', + 'image' => 'testimage', + 'noStart' => true, + 'isUpgrade' => true, + 'isLocal' => true, + 'hostPath' => '/home/user', + 'lockedDatabase' => 'mongodb', + 'vars' => [['name' => 'KEY', 'default' => 'value']], + ]); + + $array = $config->toArray(); + + $this->assertEquals('3000', $array['defaultHttpPort']); + $this->assertEquals('3443', $array['defaultHttpsPort']); + $this->assertEquals('testorg', $array['organization']); + $this->assertEquals('testimage', $array['image']); + $this->assertTrue($array['noStart']); + $this->assertTrue($array['isUpgrade']); + $this->assertTrue($array['isLocal']); + $this->assertEquals('/home/user', $array['hostPath']); + $this->assertEquals('mongodb', $array['lockedDatabase']); + $this->assertCount(1, $array['vars']); + } + + public function testToArrayCanRecreateConfig(): void + { + $original = new Config([ + 'defaultHttpPort' => '5000', + 'isLocal' => true, + 'lockedDatabase' => 'mariadb', + ]); + + $rebuilt = new Config($original->toArray()); + + $this->assertEquals($original->getDefaultHttpPort(), $rebuilt->getDefaultHttpPort()); + $this->assertEquals($original->isLocal(), $rebuilt->isLocal()); + $this->assertEquals($original->getLockedDatabase(), $rebuilt->getLockedDatabase()); + $this->assertEquals($original->toArray(), $rebuilt->toArray()); + } + + public function testSetAndGetDefaultHttpPort(): void + { + $config = new Config(); + $config->setDefaultHttpPort('9090'); + $this->assertEquals('9090', $config->getDefaultHttpPort()); + } + + public function testSetAndGetDefaultHttpsPort(): void + { + $config = new Config(); + $config->setDefaultHttpsPort('9443'); + $this->assertEquals('9443', $config->getDefaultHttpsPort()); + } + + public function testSetAndGetOrganization(): void + { + $config = new Config(); + $config->setOrganization('myorg'); + $this->assertEquals('myorg', $config->getOrganization()); + } + + public function testSetAndGetImage(): void + { + $config = new Config(); + $config->setImage('myimage'); + $this->assertEquals('myimage', $config->getImage()); + } + + public function testSetAndGetNoStart(): void + { + $config = new Config(); + $config->setNoStart(true); + $this->assertTrue($config->getNoStart()); + $config->setNoStart(false); + $this->assertFalse($config->getNoStart()); + } + + public function testSetAndGetIsUpgrade(): void + { + $config = new Config(); + $config->setIsUpgrade(true); + $this->assertTrue($config->isUpgrade()); + $config->setIsUpgrade(false); + $this->assertFalse($config->isUpgrade()); + } + + public function testSetAndGetIsLocal(): void + { + $config = new Config(); + $config->setIsLocal(true); + $this->assertTrue($config->isLocal()); + $config->setIsLocal(false); + $this->assertFalse($config->isLocal()); + } + + public function testSetAndGetHostPath(): void + { + $config = new Config(); + $config->setHostPath('/some/path'); + $this->assertEquals('/some/path', $config->getHostPath()); + $config->setHostPath(null); + $this->assertNull($config->getHostPath()); + } + + public function testSetAndGetLockedDatabase(): void + { + $config = new Config(); + $config->setLockedDatabase('mariadb'); + $this->assertEquals('mariadb', $config->getLockedDatabase()); + $config->setLockedDatabase(null); + $this->assertNull($config->getLockedDatabase()); + } + + public function testSetAndGetVars(): void + { + $config = new Config(); + $vars = [ + ['name' => '_APP_ENV', 'default' => 'production'], + ['name' => '_APP_DOMAIN', 'default' => 'localhost'], + ]; + $config->setVars($vars); + $this->assertEquals($vars, $config->getVars()); + } + + public function testJsonRoundTrip(): void + { + $config = new Config([ + 'defaultHttpPort' => '5000', + 'isUpgrade' => true, + 'lockedDatabase' => 'mongodb', + ]); + + $json = json_encode($config->toArray(), JSON_UNESCAPED_SLASHES); + $this->assertIsString($json); + + $decoded = json_decode($json, true); + $this->assertIsArray($decoded); + + $rebuilt = new Config($decoded); + $this->assertEquals($config->toArray(), $rebuilt->toArray()); + } + + public function testConstructorWithEmptyArray(): void + { + $config = new Config([]); + // Empty array has no known keys, so it gets set as vars + // But empty vars is still empty + $this->assertEmpty($config->getVars()); + $this->assertEquals('80', $config->getDefaultHttpPort()); + } + + public function testConstructorWithMixedKnownAndUnknownKeys(): void + { + // If at least one known key is found, apply() is used (not setVars) + $config = new Config([ + 'defaultHttpPort' => '9090', + 'unknownKey' => 'someValue', + ]); + // Known key should be applied + $this->assertEquals('9090', $config->getDefaultHttpPort()); + // Unknown key should be silently ignored by apply() + // Vars should remain empty since containsKnownKeys returns true + $this->assertEmpty($config->getVars()); + } + + public function testApplyWithEmptyArray(): void + { + $config = new Config(['defaultHttpPort' => '1234']); + $config->apply([]); + // Should not change anything + $this->assertEquals('1234', $config->getDefaultHttpPort()); + } + + public function testApplyBooleanCastingNoStart(): void + { + $config = new Config(); + + // Truthy int + $config->apply(['noStart' => 1]); + $this->assertTrue($config->getNoStart()); + + // Falsy int + $config->apply(['noStart' => 0]); + $this->assertFalse($config->getNoStart()); + } + + public function testApplyBooleanCastingIsUpgrade(): void + { + $config = new Config(); + + $config->apply(['isUpgrade' => 1]); + $this->assertTrue($config->isUpgrade()); + + $config->apply(['isUpgrade' => 0]); + $this->assertFalse($config->isUpgrade()); + } + + public function testApplyBooleanCastingIsLocal(): void + { + $config = new Config(); + + $config->apply(['isLocal' => 'true']); // string "true" is truthy + $this->assertTrue($config->isLocal()); + + $config->apply(['isLocal' => '']); // empty string is falsy + // But wait: the code checks $values['isLocal'] !== null first + // '' is not null, so (bool)'' = false + $this->assertFalse($config->isLocal()); + } + + public function testApplyNoStartWithNullDoesNotChange(): void + { + $config = new Config(); + $config->setNoStart(true); + $config->apply(['noStart' => null]); + // null is excluded by the null check + $this->assertTrue($config->getNoStart()); + } + + public function testApplyVarsWithNonArrayIgnored(): void + { + $config = new Config(); + $config->setVars([['name' => 'KEY', 'default' => 'val']]); + + $config->apply(['vars' => 'not an array']); + // Should not overwrite + $this->assertCount(1, $config->getVars()); + } + + public function testApplyVarsWithNullIgnored(): void + { + $config = new Config(); + $config->setVars([['name' => 'KEY', 'default' => 'val']]); + + $config->apply(['vars' => null]); + // is_array(null) = false, so should not overwrite + $this->assertCount(1, $config->getVars()); + } + + public function testApplyHostPathEmptyStringBecomesNull(): void + { + $config = new Config(); + $config->setHostPath('/some/path'); + + $config->apply(['hostPath' => '']); + // Empty string is handled: !== null && !== '' is false, so sets null + $this->assertNull($config->getHostPath()); + } + + public function testApplyLockedDatabaseIgnoresEmpty(): void + { + $config = new Config(); + $config->setLockedDatabase('mariadb'); + + $config->apply(['lockedDatabase' => '']); + // hasValidStringValue returns false for empty string + $this->assertEquals('mariadb', $config->getLockedDatabase()); + } + + public function testApplyLockedDatabaseIgnoresNull(): void + { + $config = new Config(); + $config->setLockedDatabase('mongodb'); + + $config->apply(['lockedDatabase' => null]); + // hasValidStringValue returns false for null + $this->assertEquals('mongodb', $config->getLockedDatabase()); + } + + public function testApplyPortWithIntegerValue(): void + { + $config = new Config(); + $config->apply(['defaultHttpPort' => 3000]); + // (string)3000 = '3000', not empty, so it should be applied + $this->assertEquals('3000', $config->getDefaultHttpPort()); + } + + public function testToArrayContainsAllExpectedKeys(): void + { + $config = new Config(); + $array = $config->toArray(); + + $expectedKeys = [ + 'defaultHttpPort', + 'defaultHttpsPort', + 'organization', + 'image', + 'noStart', + 'vars', + 'isUpgrade', + 'isLocal', + 'hostPath', + 'lockedDatabase', + 'enabledDatabases', + ]; + + foreach ($expectedKeys as $key) { + $this->assertArrayHasKey($key, $array, "Missing key: $key"); + } + $this->assertCount(count($expectedKeys), $array); + } + + public function testToArrayDefaultsMatchConstructorDefaults(): void + { + $config = new Config(); + $array = $config->toArray(); + + $this->assertEquals('80', $array['defaultHttpPort']); + $this->assertEquals('443', $array['defaultHttpsPort']); + $this->assertEquals('appwrite', $array['organization']); + $this->assertEquals('appwrite', $array['image']); + $this->assertFalse($array['noStart']); + $this->assertEmpty($array['vars']); + $this->assertFalse($array['isUpgrade']); + $this->assertFalse($array['isLocal']); + $this->assertNull($array['hostPath']); + $this->assertNull($array['lockedDatabase']); + $this->assertEquals(['mongodb', 'mariadb'], $array['enabledDatabases']); + } + + public function testMultipleApplyCallsAccumulate(): void + { + $config = new Config(); + + $config->apply(['defaultHttpPort' => '1111']); + $config->apply(['defaultHttpsPort' => '2222']); + $config->apply(['organization' => 'org']); + $config->apply(['isLocal' => true]); + + $this->assertEquals('1111', $config->getDefaultHttpPort()); + $this->assertEquals('2222', $config->getDefaultHttpsPort()); + $this->assertEquals('org', $config->getOrganization()); + $this->assertTrue($config->isLocal()); + } + + public function testApplyOverwritesPreviousValues(): void + { + $config = new Config(['defaultHttpPort' => '1111']); + $this->assertEquals('1111', $config->getDefaultHttpPort()); + + $config->apply(['defaultHttpPort' => '2222']); + $this->assertEquals('2222', $config->getDefaultHttpPort()); + + $config->apply(['defaultHttpPort' => '3333']); + $this->assertEquals('3333', $config->getDefaultHttpPort()); + } + + public function testSetVarsReplacesNotMerges(): void + { + $config = new Config(); + $config->setVars([['name' => 'A', 'default' => '1']]); + $config->setVars([['name' => 'B', 'default' => '2']]); + + $vars = $config->getVars(); + $this->assertCount(1, $vars); + $this->assertEquals('B', $vars[0]['name']); + } + + public function testApplyVarsReplacesNotMerges(): void + { + $config = new Config(); + $config->apply(['vars' => [['name' => 'A', 'default' => '1']]]); + $config->apply(['vars' => [['name' => 'B', 'default' => '2']]]); + + $vars = $config->getVars(); + $this->assertCount(1, $vars); + $this->assertEquals('B', $vars[0]['name']); + } + + public function testDefaultEnabledDatabases(): void + { + $config = new Config(); + $this->assertEquals(['mongodb', 'mariadb'], $config->getEnabledDatabases()); + $this->assertTrue($config->isDatabaseEnabled('mongodb')); + $this->assertTrue($config->isDatabaseEnabled('mariadb')); + $this->assertFalse($config->isDatabaseEnabled('postgresql')); + } + + public function testSetEnabledDatabases(): void + { + $config = new Config(); + $config->setEnabledDatabases(['mongodb', 'mariadb', 'postgresql']); + $this->assertEquals(['mongodb', 'mariadb', 'postgresql'], $config->getEnabledDatabases()); + $this->assertTrue($config->isDatabaseEnabled('postgresql')); + } + + public function testSetEnabledDatabasesFiltersInvalid(): void + { + $config = new Config(); + $config->setEnabledDatabases(['mongodb', '', null, 42, 'mariadb']); + $this->assertEquals(['mongodb', 'mariadb'], $config->getEnabledDatabases()); + } + + public function testSetEnabledDatabasesEmptyArrayPreservesExisting(): void + { + $config = new Config(); + $config->setEnabledDatabases(['mongodb', 'postgresql']); + $config->setEnabledDatabases([]); + $this->assertEquals(['mongodb', 'postgresql'], $config->getEnabledDatabases()); + } + + public function testApplyEnabledDatabases(): void + { + $config = new Config(); + $config->apply(['enabledDatabases' => ['mongodb', 'mariadb', 'postgresql']]); + $this->assertEquals(['mongodb', 'mariadb', 'postgresql'], $config->getEnabledDatabases()); + $this->assertTrue($config->isDatabaseEnabled('postgresql')); + } + + public function testApplyEnabledDatabasesNonArrayIgnored(): void + { + $config = new Config(); + $config->apply(['enabledDatabases' => 'mongodb']); + $this->assertEquals(['mongodb', 'mariadb'], $config->getEnabledDatabases()); + } + + public function testEnabledDatabasesInToArray(): void + { + $config = new Config(); + $config->setEnabledDatabases(['mongodb']); + $array = $config->toArray(); + $this->assertEquals(['mongodb'], $array['enabledDatabases']); + } + + public function testEnabledDatabasesRoundTrip(): void + { + $config = new Config(); + $config->setEnabledDatabases(['mongodb', 'postgresql']); + $rebuilt = new Config($config->toArray()); + $this->assertEquals(['mongodb', 'postgresql'], $rebuilt->getEnabledDatabases()); + } +} diff --git a/tests/unit/Platform/Modules/Installer/Runtime/StateTest.php b/tests/unit/Platform/Modules/Installer/Runtime/StateTest.php new file mode 100644 index 0000000000..6c36e6d732 --- /dev/null +++ b/tests/unit/Platform/Modules/Installer/Runtime/StateTest.php @@ -0,0 +1,1160 @@ +tempDir = sys_get_temp_dir() . '/appwrite-installer-test-' . uniqid(); + mkdir($this->tempDir, 0755, true); + + $root = dirname(__DIR__, 6); + $this->state = new State([ + 'public' => $root . '/public', + 'init' => $root . '/app/init.php', + 'views' => $root . '/app/views/install', + 'vendor' => $root . '/vendor/autoload.php', + 'installPhp' => $root . '/src/Appwrite/Platform/Tasks/Install.php', + ]); + + // Preserve env state + $env = getenv('APPWRITE_INSTALLER_CONFIG'); + $this->savedEnv = $env !== false ? $env : null; + } + + protected function tearDown(): void + { + // Clean up temp files + $files = glob($this->tempDir . '/*'); + if (is_array($files)) { + foreach ($files as $file) { + @unlink($file); + } + } + @rmdir($this->tempDir); + + // Clean up progress files + foreach ($this->progressFiles as $file) { + @unlink($file); + } + + // Clean up lock file + @unlink(Server::INSTALLER_LOCK_FILE); + @unlink(Server::INSTALLER_CONFIG_FILE); + + // Restore env state + if ($this->savedEnv !== null) { + putenv('APPWRITE_INSTALLER_CONFIG=' . $this->savedEnv); + } else { + putenv('APPWRITE_INSTALLER_CONFIG'); + } + + $this->state = null; + } + + private function trackProgressFile(string $installId): void + { + $this->progressFiles[] = $this->state->progressFilePath($installId); + } + + public function testSanitizeInstallIdWithValidId(): void + { + $this->assertEquals('abc123', $this->state->sanitizeInstallId('abc123')); + } + + public function testSanitizeInstallIdWithSpecialChars(): void + { + $this->assertEquals('abc123', $this->state->sanitizeInstallId('abc!@#123')); + } + + public function testSanitizeInstallIdWithHyphensAndUnderscores(): void + { + $this->assertEquals('abc-123_def', $this->state->sanitizeInstallId('abc-123_def')); + } + + public function testSanitizeInstallIdTruncatesTo64Chars(): void + { + $long = str_repeat('a', 100); + $this->assertEquals(64, strlen($this->state->sanitizeInstallId($long))); + } + + public function testSanitizeInstallIdWithEmptyString(): void + { + $this->assertEquals('', $this->state->sanitizeInstallId('')); + } + + public function testSanitizeInstallIdWithNonString(): void + { + $this->assertEquals('', $this->state->sanitizeInstallId(123)); + $this->assertEquals('', $this->state->sanitizeInstallId(null)); + } + + public function testHashSensitiveValueProducesConsistentHash(): void + { + $hash1 = $this->state->hashSensitiveValue('secret'); + $hash2 = $this->state->hashSensitiveValue('secret'); + $this->assertEquals($hash1, $hash2); + } + + public function testHashSensitiveValueDifferentInputsDifferentHashes(): void + { + $hash1 = $this->state->hashSensitiveValue('secret1'); + $hash2 = $this->state->hashSensitiveValue('secret2'); + $this->assertNotEquals($hash1, $hash2); + } + + public function testHashSensitiveValueTrimsWhitespace(): void + { + $hash1 = $this->state->hashSensitiveValue('secret'); + $hash2 = $this->state->hashSensitiveValue(' secret '); + $this->assertEquals($hash1, $hash2); + } + + public function testHashSensitiveValueEmptyStringReturnsEmpty(): void + { + $this->assertEquals('', $this->state->hashSensitiveValue('')); + $this->assertEquals('', $this->state->hashSensitiveValue(' ')); + } + + public function testHashSensitiveValueReturnsSha256(): void + { + $hash = $this->state->hashSensitiveValue('test'); + $this->assertEquals(64, strlen($hash)); // SHA-256 produces 64 hex chars + $this->assertMatchesRegularExpression('/^[a-f0-9]{64}$/', $hash); + } + + public function testIsValidPortWithValidPorts(): void + { + $this->assertTrue($this->state->isValidPort('1')); + $this->assertTrue($this->state->isValidPort('80')); + $this->assertTrue($this->state->isValidPort('443')); + $this->assertTrue($this->state->isValidPort('8080')); + $this->assertTrue($this->state->isValidPort('65535')); + } + + public function testIsValidPortWithInvalidPorts(): void + { + $this->assertFalse($this->state->isValidPort('0')); + $this->assertFalse($this->state->isValidPort('65536')); + $this->assertFalse($this->state->isValidPort('-1')); + $this->assertFalse($this->state->isValidPort('abc')); + $this->assertFalse($this->state->isValidPort('')); + $this->assertFalse($this->state->isValidPort('80.5')); + $this->assertFalse($this->state->isValidPort('80abc')); + } + + public function testIsValidPortWithIntegerInput(): void + { + $this->assertTrue($this->state->isValidPort(80)); + $this->assertTrue($this->state->isValidPort(443)); + $this->assertFalse($this->state->isValidPort(0)); + } + + public function testIsValidEmailAddressWithValidEmails(): void + { + $this->assertTrue($this->state->isValidEmailAddress('user@example.com')); + $this->assertTrue($this->state->isValidEmailAddress('test.user@domain.org')); + $this->assertTrue($this->state->isValidEmailAddress('admin+tag@example.co.uk')); + } + + public function testIsValidEmailAddressWithInvalidEmails(): void + { + $this->assertFalse($this->state->isValidEmailAddress('')); + $this->assertFalse($this->state->isValidEmailAddress('notanemail')); + $this->assertFalse($this->state->isValidEmailAddress('@domain.com')); + $this->assertFalse($this->state->isValidEmailAddress('user@')); + } + + public function testIsValidPasswordWithValidPasswords(): void + { + $this->assertTrue($this->state->isValidPassword('12345678')); + $this->assertTrue($this->state->isValidPassword('abcdefgh')); + $this->assertTrue($this->state->isValidPassword('P@ssw0rd!')); + } + + public function testIsValidPasswordWithInvalidPasswords(): void + { + $this->assertFalse($this->state->isValidPassword('')); + $this->assertFalse($this->state->isValidPassword('short')); + $this->assertFalse($this->state->isValidPassword('1234567')); // 7 chars + $this->assertFalse($this->state->isValidPassword(' ')); // 8 spaces, no non-whitespace + } + + public function testIsValidSecretKeyWithValidKeys(): void + { + $this->assertTrue($this->state->isValidSecretKey('a')); + $this->assertTrue($this->state->isValidSecretKey('my-secret-key')); + $this->assertTrue($this->state->isValidSecretKey(str_repeat('x', 64))); + } + + public function testIsValidSecretKeyWithInvalidKeys(): void + { + $this->assertFalse($this->state->isValidSecretKey('')); + $this->assertFalse($this->state->isValidSecretKey(str_repeat('x', 65))); + } + + public function testIsValidAccountNameWithValidNames(): void + { + $this->assertTrue($this->state->isValidAccountName('John')); + $this->assertTrue($this->state->isValidAccountName('a')); + } + + public function testIsValidAccountNameWithInvalidNames(): void + { + $this->assertFalse($this->state->isValidAccountName('')); + $this->assertFalse($this->state->isValidAccountName(' ')); + } + + public function testIsValidAppDomainInputWithValidDomains(): void + { + $this->assertTrue($this->state->isValidAppDomainInput('localhost')); + $this->assertTrue($this->state->isValidAppDomainInput('example.com')); + $this->assertTrue($this->state->isValidAppDomainInput('sub.example.com')); + $this->assertTrue($this->state->isValidAppDomainInput('127.0.0.1')); + $this->assertTrue($this->state->isValidAppDomainInput('192.168.1.1')); + } + + public function testIsValidAppDomainInputWithPort(): void + { + $this->assertTrue($this->state->isValidAppDomainInput('localhost:8080')); + $this->assertTrue($this->state->isValidAppDomainInput('example.com:443')); + $this->assertTrue($this->state->isValidAppDomainInput('127.0.0.1:3000')); + } + + public function testIsValidAppDomainInputWithIpv6(): void + { + $this->assertTrue($this->state->isValidAppDomainInput('[::1]')); + $this->assertTrue($this->state->isValidAppDomainInput('[::1]:8080')); + } + + public function testIsValidAppDomainInputWithInvalidDomains(): void + { + $this->assertFalse($this->state->isValidAppDomainInput('')); + $this->assertFalse($this->state->isValidAppDomainInput(' ')); + $this->assertFalse($this->state->isValidAppDomainInput('localhost:99999')); + $this->assertFalse($this->state->isValidAppDomainInput('localhost:0')); + $this->assertFalse($this->state->isValidAppDomainInput('host:port:extra')); + } + + public function testIsValidDatabaseAdapterWithValidAdapters(): void + { + $this->assertTrue($this->state->isValidDatabaseAdapter('mongodb')); + $this->assertTrue($this->state->isValidDatabaseAdapter('mariadb')); + $this->assertTrue($this->state->isValidDatabaseAdapter('postgresql')); + } + + public function testIsValidDatabaseAdapterWithInvalidAdapters(): void + { + $this->assertFalse($this->state->isValidDatabaseAdapter('')); + $this->assertFalse($this->state->isValidDatabaseAdapter('mysql')); + $this->assertFalse($this->state->isValidDatabaseAdapter('postgres')); + $this->assertFalse($this->state->isValidDatabaseAdapter('PostgreSQL')); + $this->assertFalse($this->state->isValidDatabaseAdapter('MongoDB')); // case sensitive + } + + public function testProgressFilePathFormat(): void + { + $path = $this->state->progressFilePath('test123'); + $this->assertStringContainsString('appwrite-install-test123.json', $path); + $this->assertStringStartsWith(sys_get_temp_dir(), $path); + } + + public function testReadProgressFileReturnsDefaultForMissing(): void + { + $data = $this->state->readProgressFile('nonexistent-id-' . uniqid()); + $this->assertIsArray($data); + $this->assertArrayHasKey('installId', $data); + $this->assertArrayHasKey('steps', $data); + $this->assertEmpty($data['steps']); + } + + public function testWriteAndReadProgressFile(): void + { + $installId = 'test-' . uniqid(); + + $this->state->writeProgressFile($installId, [ + 'step' => Server::STEP_ENV_VARS, + 'status' => Server::STATUS_IN_PROGRESS, + 'message' => 'Writing environment variables', + 'updatedAt' => time(), + ]); + + $data = $this->state->readProgressFile($installId); + $this->assertIsArray($data); + $this->assertArrayHasKey('steps', $data); + $this->assertArrayHasKey(Server::STEP_ENV_VARS, $data['steps']); + $this->assertEquals(Server::STATUS_IN_PROGRESS, $data['steps'][Server::STEP_ENV_VARS]['status']); + $this->assertEquals('Writing environment variables', $data['steps'][Server::STEP_ENV_VARS]['message']); + + // Cleanup + @unlink($this->state->progressFilePath($installId)); + } + + public function testWriteProgressFileAccumulatesSteps(): void + { + $installId = 'test-multi-' . uniqid(); + + $this->state->writeProgressFile($installId, [ + 'step' => Server::STEP_ENV_VARS, + 'status' => Server::STATUS_COMPLETED, + 'message' => 'Done', + 'updatedAt' => time(), + ]); + + $this->state->writeProgressFile($installId, [ + 'step' => Server::STEP_DOCKER_COMPOSE, + 'status' => Server::STATUS_IN_PROGRESS, + 'message' => 'Generating compose file', + 'updatedAt' => time(), + ]); + + $data = $this->state->readProgressFile($installId); + $this->assertCount(2, $data['steps']); + $this->assertArrayHasKey(Server::STEP_ENV_VARS, $data['steps']); + $this->assertArrayHasKey(Server::STEP_DOCKER_COMPOSE, $data['steps']); + + // Cleanup + @unlink($this->state->progressFilePath($installId)); + } + + public function testWriteProgressFileStoresPayload(): void + { + $installId = 'test-payload-' . uniqid(); + + $this->state->writeProgressFile($installId, [ + 'payload' => [ + 'httpPort' => '80', + 'httpsPort' => '443', + 'database' => 'mariadb', + ], + 'step' => 'start', + 'status' => Server::STATUS_IN_PROGRESS, + 'message' => 'Started', + 'updatedAt' => time(), + ]); + + $data = $this->state->readProgressFile($installId); + $this->assertArrayHasKey('payload', $data); + $this->assertEquals('80', $data['payload']['httpPort']); + $this->assertEquals('443', $data['payload']['httpsPort']); + $this->assertEquals('mariadb', $data['payload']['database']); + $this->assertArrayHasKey('startedAt', $data); + + // Cleanup + @unlink($this->state->progressFilePath($installId)); + } + + public function testWriteProgressFileStoresErrorMessage(): void + { + $installId = 'test-error-' . uniqid(); + + $this->state->writeProgressFile($installId, [ + 'step' => Server::STEP_DOCKER_CONTAINERS, + 'status' => Server::STATUS_ERROR, + 'message' => 'Container failed to start', + 'updatedAt' => time(), + ]); + + $data = $this->state->readProgressFile($installId); + $this->assertArrayHasKey('error', $data); + $this->assertEquals('Container failed to start', $data['error']); + + // Cleanup + @unlink($this->state->progressFilePath($installId)); + } + + public function testWriteProgressFileStoresDetails(): void + { + $installId = 'test-details-' . uniqid(); + + $this->state->writeProgressFile($installId, [ + 'step' => Server::STEP_DOCKER_COMPOSE, + 'status' => Server::STATUS_COMPLETED, + 'message' => 'Done', + 'details' => ['composeFile' => '/path/to/docker-compose.yml'], + 'updatedAt' => time(), + ]); + + $data = $this->state->readProgressFile($installId); + $this->assertArrayHasKey('details', $data); + $this->assertArrayHasKey(Server::STEP_DOCKER_COMPOSE, $data['details']); + $this->assertEquals('/path/to/docker-compose.yml', $data['details'][Server::STEP_DOCKER_COMPOSE]['composeFile']); + + // Cleanup + @unlink($this->state->progressFilePath($installId)); + } + + public function testBuildConfigReturnsConfigInstance(): void + { + // Clear env to avoid interference + putenv('APPWRITE_INSTALLER_CONFIG'); + + $config = $this->state->buildConfig([], false); + $this->assertInstanceOf(Config::class, $config); + } + + public function testBuildConfigAppliesOverrides(): void + { + putenv('APPWRITE_INSTALLER_CONFIG'); + + $config = $this->state->buildConfig(['defaultHttpPort' => '9090'], false); + $this->assertEquals('9090', $config->getDefaultHttpPort()); + } + + public function testBuildConfigFromEnvVar(): void + { + $envData = json_encode([ + 'defaultHttpPort' => '8888', + 'isUpgrade' => true, + ]); + putenv('APPWRITE_INSTALLER_CONFIG=' . $envData); + + $config = $this->state->buildConfig([], true); + $this->assertEquals('8888', $config->getDefaultHttpPort()); + $this->assertTrue($config->isUpgrade()); + + // Cleanup + putenv('APPWRITE_INSTALLER_CONFIG'); + } + + public function testBuildConfigOverridesEnv(): void + { + $envData = json_encode(['defaultHttpPort' => '8888']); + putenv('APPWRITE_INSTALLER_CONFIG=' . $envData); + + $config = $this->state->buildConfig(['defaultHttpPort' => '7777'], true); + $this->assertEquals('7777', $config->getDefaultHttpPort()); + + // Cleanup + putenv('APPWRITE_INSTALLER_CONFIG'); + } + + public function testSanitizeInstallIdWithOnlySpecialChars(): void + { + $this->assertEquals('', $this->state->sanitizeInstallId('!@#$%^&*()')); + } + + public function testSanitizeInstallIdWithUnicode(): void + { + // Unicode letters are stripped byte-by-byte, only ASCII alphanum + hyphen + underscore kept + // 'é' is 2 bytes (0xC3 0xA9), both stripped => 'héllo' becomes 'hllo' + $this->assertEquals('hllo', $this->state->sanitizeInstallId('héllo')); + } + + public function testSanitizeInstallIdWithExactly64Chars(): void + { + $exact = str_repeat('b', 64); + $this->assertEquals($exact, $this->state->sanitizeInstallId($exact)); + $this->assertEquals(64, strlen($this->state->sanitizeInstallId($exact))); + } + + public function testSanitizeInstallIdWithBooleanInput(): void + { + $this->assertEquals('', $this->state->sanitizeInstallId(true)); + $this->assertEquals('', $this->state->sanitizeInstallId(false)); + } + + public function testSanitizeInstallIdWithArrayInput(): void + { + $this->assertEquals('', $this->state->sanitizeInstallId([])); + } + + public function testSanitizeInstallIdPreservesCase(): void + { + $this->assertEquals('AbCdEf', $this->state->sanitizeInstallId('AbCdEf')); + } + + public function testIsValidPortBoundaryValues(): void + { + $this->assertTrue($this->state->isValidPort('1')); + $this->assertTrue($this->state->isValidPort('65535')); + $this->assertFalse($this->state->isValidPort('0')); + $this->assertFalse($this->state->isValidPort('65536')); + } + + public function testIsValidPortWithLeadingZeros(): void + { + // '080' is digits-only and parses to 80 which is in range + $this->assertTrue($this->state->isValidPort('080')); + // '00' parses to 0, which is out of range + $this->assertFalse($this->state->isValidPort('00')); + } + + public function testIsValidPortWithWhitespace(): void + { + // Contains non-digit characters + $this->assertFalse($this->state->isValidPort(' 80')); + $this->assertFalse($this->state->isValidPort('80 ')); + $this->assertFalse($this->state->isValidPort(' 80 ')); + } + + public function testIsValidPortWithNegativeNumber(): void + { + $this->assertFalse($this->state->isValidPort('-80')); + $this->assertFalse($this->state->isValidPort('-1')); + } + + public function testIsValidPortWithVeryLargeNumber(): void + { + $this->assertFalse($this->state->isValidPort('999999')); + $this->assertFalse($this->state->isValidPort('100000')); + } + + public function testIsValidPasswordExactly8Chars(): void + { + $this->assertTrue($this->state->isValidPassword('12345678')); + $this->assertFalse($this->state->isValidPassword('1234567')); + } + + public function testIsValidPasswordWithTabsAndNewlines(): void + { + // Tabs/newlines count as whitespace, but need at least one non-whitespace + $this->assertFalse($this->state->isValidPassword("\t\t\t\t\t\t\t\t")); // 8 tabs + $this->assertTrue($this->state->isValidPassword("\t\t\t\ttest")); // mixed + } + + public function testIsValidPasswordWithMixedWhitespaceAndChars(): void + { + $this->assertTrue($this->state->isValidPassword(' a ')); // has non-whitespace + } + + public function testIsValidSecretKeyExactly64Chars(): void + { + $this->assertTrue($this->state->isValidSecretKey(str_repeat('a', 64))); + } + + public function testIsValidSecretKeyWithWhitespace(): void + { + // Whitespace-only is still non-empty and <= 64 chars + $this->assertTrue($this->state->isValidSecretKey(' ')); + $this->assertTrue($this->state->isValidSecretKey(' ')); + } + + public function testIsValidAppDomainInputWithEmptyPort(): void + { + // "host:" splits to ['host', ''] - empty port with null check + $this->assertTrue($this->state->isValidAppDomainInput('localhost:')); + } + + public function testIsValidAppDomainInputWithIpv4Address(): void + { + $this->assertTrue($this->state->isValidAppDomainInput('10.0.0.1')); + $this->assertTrue($this->state->isValidAppDomainInput('255.255.255.255')); + $this->assertTrue($this->state->isValidAppDomainInput('0.0.0.0')); + } + + public function testIsValidAppDomainInputIpv6WithoutBrackets(): void + { + // Raw IPv6 without brackets: "::1" has two colons, so count($parts) > 2 => false + $this->assertFalse($this->state->isValidAppDomainInput('::1')); + $this->assertFalse($this->state->isValidAppDomainInput('fe80::1')); + } + + public function testIsValidAppDomainInputIpv6MalformedBrackets(): void + { + $this->assertFalse($this->state->isValidAppDomainInput('[')); + $this->assertFalse($this->state->isValidAppDomainInput('[]')); + $this->assertFalse($this->state->isValidAppDomainInput('[invalid')); + } + + public function testIsValidAppDomainInputWithSubdomains(): void + { + $this->assertTrue($this->state->isValidAppDomainInput('a.b.c.d.example.com')); + $this->assertTrue($this->state->isValidAppDomainInput('my-app.example.io:8080')); + } + + public function testIsValidAppDomainInputWithInvalidPortNumber(): void + { + $this->assertFalse($this->state->isValidAppDomainInput('localhost:abc')); + $this->assertFalse($this->state->isValidAppDomainInput('localhost:70000')); + $this->assertFalse($this->state->isValidAppDomainInput('[::1]:70000')); + } + + public function testIsValidDatabaseAdapterWithWhitespace(): void + { + $this->assertFalse($this->state->isValidDatabaseAdapter(' mongodb')); + $this->assertFalse($this->state->isValidDatabaseAdapter('mariadb ')); + $this->assertFalse($this->state->isValidDatabaseAdapter(' postgresql')); + } + + public function testIsValidDatabaseAdapterCaseSensitivity(): void + { + $this->assertFalse($this->state->isValidDatabaseAdapter('MongoDB')); + $this->assertFalse($this->state->isValidDatabaseAdapter('MariaDB')); + $this->assertFalse($this->state->isValidDatabaseAdapter('PostgreSQL')); + $this->assertFalse($this->state->isValidDatabaseAdapter('MONGODB')); + } + + public function testReadProgressFileWithCorruptedJson(): void + { + $installId = 'test-corrupt-' . uniqid(); + $this->trackProgressFile($installId); + $path = $this->state->progressFilePath($installId); + file_put_contents($path, 'not valid json {{{'); + + $data = $this->state->readProgressFile($installId); + $this->assertIsArray($data); + $this->assertArrayHasKey('installId', $data); + $this->assertArrayHasKey('steps', $data); + $this->assertEmpty($data['steps']); + } + + public function testReadProgressFileWithEmptyFile(): void + { + $installId = 'test-empty-' . uniqid(); + $this->trackProgressFile($installId); + $path = $this->state->progressFilePath($installId); + file_put_contents($path, ''); + + $data = $this->state->readProgressFile($installId); + $this->assertIsArray($data); + $this->assertArrayHasKey('installId', $data); + $this->assertEmpty($data['steps']); + } + + public function testReadProgressFileWithJsonScalar(): void + { + $installId = 'test-scalar-' . uniqid(); + $this->trackProgressFile($installId); + $path = $this->state->progressFilePath($installId); + file_put_contents($path, '"just a string"'); + + $data = $this->state->readProgressFile($installId); + $this->assertIsArray($data); + $this->assertEmpty($data['steps']); + } + + public function testWriteProgressFileOverwritesExistingStep(): void + { + $installId = 'test-overwrite-' . uniqid(); + $this->trackProgressFile($installId); + + $this->state->writeProgressFile($installId, [ + 'step' => Server::STEP_ENV_VARS, + 'status' => Server::STATUS_IN_PROGRESS, + 'message' => 'Working...', + 'updatedAt' => time(), + ]); + + $this->state->writeProgressFile($installId, [ + 'step' => Server::STEP_ENV_VARS, + 'status' => Server::STATUS_COMPLETED, + 'message' => 'Done!', + 'updatedAt' => time(), + ]); + + $data = $this->state->readProgressFile($installId); + $this->assertCount(1, $data['steps']); // Still 1 step, overwritten + $this->assertEquals(Server::STATUS_COMPLETED, $data['steps'][Server::STEP_ENV_VARS]['status']); + $this->assertEquals('Done!', $data['steps'][Server::STEP_ENV_VARS]['message']); + } + + public function testWriteProgressFileWithEmptyStep(): void + { + $installId = 'test-emptystep-' . uniqid(); + $this->trackProgressFile($installId); + + $this->state->writeProgressFile($installId, [ + 'step' => '', + 'status' => Server::STATUS_IN_PROGRESS, + 'message' => 'No step name', + 'updatedAt' => time(), + ]); + + $data = $this->state->readProgressFile($installId); + // Empty step name treated as falsy, should not add to steps + $this->assertEmpty($data['steps']); + } + + public function testWriteProgressFilePreservesPayloadAcrossWrites(): void + { + $installId = 'test-persist-' . uniqid(); + $this->trackProgressFile($installId); + + $this->state->writeProgressFile($installId, [ + 'payload' => ['httpPort' => '80', 'database' => 'mongodb'], + 'step' => 'start', + 'status' => Server::STATUS_IN_PROGRESS, + 'message' => 'Starting', + 'updatedAt' => time(), + ]); + + $this->state->writeProgressFile($installId, [ + 'step' => Server::STEP_ENV_VARS, + 'status' => Server::STATUS_COMPLETED, + 'message' => 'Env done', + 'updatedAt' => time(), + ]); + + $data = $this->state->readProgressFile($installId); + // Payload from first write should still be present + $this->assertArrayHasKey('payload', $data); + $this->assertEquals('80', $data['payload']['httpPort']); + $this->assertEquals('mongodb', $data['payload']['database']); + // Both steps should exist + $this->assertArrayHasKey('start', $data['steps']); + $this->assertArrayHasKey(Server::STEP_ENV_VARS, $data['steps']); + } + + public function testWriteProgressFileUpdatesTimestamp(): void + { + $installId = 'test-time-' . uniqid(); + $this->trackProgressFile($installId); + $now = time(); + + $this->state->writeProgressFile($installId, [ + 'step' => Server::STEP_ENV_VARS, + 'status' => Server::STATUS_IN_PROGRESS, + 'message' => 'test', + 'updatedAt' => $now, + ]); + + $data = $this->state->readProgressFile($installId); + $this->assertEquals($now, $data['updatedAt']); + } + + public function testWriteProgressFileStartedAtOnlySetOnce(): void + { + $installId = 'test-startedat-' . uniqid(); + $this->trackProgressFile($installId); + $firstTime = time() - 100; + + // First write with payload sets startedAt + $this->state->writeProgressFile($installId, [ + 'payload' => ['httpPort' => '80'], + 'step' => 'start', + 'status' => Server::STATUS_IN_PROGRESS, + 'message' => 'Starting', + 'updatedAt' => $firstTime, + ]); + + $data = $this->state->readProgressFile($installId); + $startedAt = $data['startedAt']; + + // Second write with payload should NOT overwrite startedAt + $this->state->writeProgressFile($installId, [ + 'payload' => ['httpPort' => '80'], + 'step' => Server::STEP_ENV_VARS, + 'status' => Server::STATUS_IN_PROGRESS, + 'message' => 'Env', + 'updatedAt' => time(), + ]); + + $data = $this->state->readProgressFile($installId); + $this->assertEquals($startedAt, $data['startedAt']); + } + + public function testReserveGlobalLockFirstLockSucceeds(): void + { + @unlink(Server::INSTALLER_LOCK_FILE); + $installId = 'lock-test-' . uniqid(); + $result = $this->state->reserveGlobalLock($installId); + $this->assertEquals('ok', $result); + } + + public function testReserveGlobalLockSameIdCanRelock(): void + { + @unlink(Server::INSTALLER_LOCK_FILE); + $installId = 'lock-relock-' . uniqid(); + + $result1 = $this->state->reserveGlobalLock($installId); + $this->assertEquals('ok', $result1); + + // Same ID can re-reserve + $result2 = $this->state->reserveGlobalLock($installId); + $this->assertEquals('ok', $result2); + } + + public function testReserveGlobalLockDifferentIdBlocked(): void + { + @unlink(Server::INSTALLER_LOCK_FILE); + $installId1 = 'lock-id1-' . uniqid(); + $installId2 = 'lock-id2-' . uniqid(); + + $result1 = $this->state->reserveGlobalLock($installId1); + $this->assertEquals('ok', $result1); + + // Different ID should be blocked + $result2 = $this->state->reserveGlobalLock($installId2); + $this->assertEquals('locked', $result2); + } + + public function testReserveGlobalLockAfterCompleted(): void + { + @unlink(Server::INSTALLER_LOCK_FILE); + $installId1 = 'lock-done-' . uniqid(); + $installId2 = 'lock-new-' . uniqid(); + + $this->state->reserveGlobalLock($installId1); + $this->state->updateGlobalLock($installId1, Server::STATUS_COMPLETED); + + // After completion, a new install should be able to lock + $result = $this->state->reserveGlobalLock($installId2); + $this->assertEquals('ok', $result); + } + + public function testReserveGlobalLockAfterError(): void + { + @unlink(Server::INSTALLER_LOCK_FILE); + $installId1 = 'lock-err-' . uniqid(); + $installId2 = 'lock-retry-' . uniqid(); + + $this->state->reserveGlobalLock($installId1); + $this->state->updateGlobalLock($installId1, Server::STATUS_ERROR); + + // After error, a new install should be able to lock + $result = $this->state->reserveGlobalLock($installId2); + $this->assertEquals('ok', $result); + } + + public function testReserveGlobalLockExpiredLockAllowsNew(): void + { + @unlink(Server::INSTALLER_LOCK_FILE); + + // Manually write an expired lock (updatedAt way in the past) + $expiredLock = [ + 'installId' => 'expired-lock', + 'status' => Server::STATUS_IN_PROGRESS, + 'updatedAt' => time() - 7200, // 2 hours ago, timeout is 1 hour + ]; + file_put_contents(Server::INSTALLER_LOCK_FILE, json_encode($expiredLock)); + + $newId = 'lock-after-expired-' . uniqid(); + $result = $this->state->reserveGlobalLock($newId); + $this->assertEquals('ok', $result); + } + + public function testUpdateGlobalLockUpdatesOwnLock(): void + { + @unlink(Server::INSTALLER_LOCK_FILE); + $installId = 'lock-update-' . uniqid(); + + $this->state->reserveGlobalLock($installId); + $this->state->updateGlobalLock($installId, Server::STATUS_COMPLETED); + + // Read lock file directly to verify + $contents = file_get_contents(Server::INSTALLER_LOCK_FILE); + $this->assertNotFalse($contents); + $lock = json_decode($contents, true); + $this->assertIsArray($lock); + $this->assertEquals($installId, $lock['installId']); + $this->assertEquals(Server::STATUS_COMPLETED, $lock['status']); + } + + public function testUpdateGlobalLockIgnoresDifferentId(): void + { + @unlink(Server::INSTALLER_LOCK_FILE); + $installId1 = 'lock-owner-' . uniqid(); + $installId2 = 'lock-intruder-' . uniqid(); + + $this->state->reserveGlobalLock($installId1); + + // Attempt to update with a different ID should be silently ignored + $this->state->updateGlobalLock($installId2, Server::STATUS_COMPLETED); + + // Original lock should still be in progress + $contents = file_get_contents(Server::INSTALLER_LOCK_FILE); + $lock = json_decode($contents, true); + $this->assertEquals($installId1, $lock['installId']); + $this->assertEquals(Server::STATUS_IN_PROGRESS, $lock['status']); + } + + public function testApplyEnvConfigWithConfigObject(): void + { + putenv('APPWRITE_INSTALLER_CONFIG'); + @unlink(Server::INSTALLER_CONFIG_FILE); + + $cfg = new Config(['defaultHttpPort' => '5555', 'isLocal' => true]); + $this->state->applyEnvConfig($cfg); + + // Verify env var was set + $envVal = getenv('APPWRITE_INSTALLER_CONFIG'); + $this->assertNotFalse($envVal); + + $decoded = json_decode($envVal, true); + $this->assertIsArray($decoded); + $this->assertEquals('5555', $decoded['defaultHttpPort']); + $this->assertTrue($decoded['isLocal']); + + // Verify config file was written + $this->assertFileExists(Server::INSTALLER_CONFIG_FILE); + $fileContents = file_get_contents(Server::INSTALLER_CONFIG_FILE); + $this->assertNotFalse($fileContents); + $fileDecoded = json_decode($fileContents, true); + $this->assertEquals('5555', $fileDecoded['defaultHttpPort']); + } + + public function testApplyEnvConfigWithArray(): void + { + putenv('APPWRITE_INSTALLER_CONFIG'); + @unlink(Server::INSTALLER_CONFIG_FILE); + + $this->state->applyEnvConfig(['defaultHttpPort' => '6666']); + + $envVal = getenv('APPWRITE_INSTALLER_CONFIG'); + $this->assertNotFalse($envVal); + $decoded = json_decode($envVal, true); + $this->assertEquals('6666', $decoded['defaultHttpPort']); + } + + public function testApplyEnvConfigThenBuildConfigReadsIt(): void + { + putenv('APPWRITE_INSTALLER_CONFIG'); + @unlink(Server::INSTALLER_CONFIG_FILE); + + $cfg = new Config(['defaultHttpPort' => '4444', 'isUpgrade' => true]); + $this->state->applyEnvConfig($cfg); + + // buildConfig with useEnv=true should pick up the env var + $rebuilt = $this->state->buildConfig([], true); + $this->assertEquals('4444', $rebuilt->getDefaultHttpPort()); + $this->assertTrue($rebuilt->isUpgrade()); + } + + public function testBuildConfigWithInvalidEnvJson(): void + { + putenv('APPWRITE_INSTALLER_CONFIG=not-valid-json'); + + // Should fall back to config file (or defaults if file doesn't exist) + @unlink(Server::INSTALLER_CONFIG_FILE); + $config = $this->state->buildConfig([], true); + // Should get defaults since both env and file are invalid/missing + $this->assertEquals('80', $config->getDefaultHttpPort()); + } + + public function testBuildConfigWithEmptyEnvVar(): void + { + putenv('APPWRITE_INSTALLER_CONFIG='); + + @unlink(Server::INSTALLER_CONFIG_FILE); + $config = $this->state->buildConfig([], true); + $this->assertEquals('80', $config->getDefaultHttpPort()); + } + + public function testBuildConfigFallsBackToConfigFile(): void + { + putenv('APPWRITE_INSTALLER_CONFIG'); + + // Write a config file + $data = json_encode(['defaultHttpPort' => '3333']); + file_put_contents(Server::INSTALLER_CONFIG_FILE, $data); + + $config = $this->state->buildConfig([], true); + $this->assertEquals('3333', $config->getDefaultHttpPort()); + } + + public function testBuildConfigWithCorruptedConfigFile(): void + { + putenv('APPWRITE_INSTALLER_CONFIG'); + + file_put_contents(Server::INSTALLER_CONFIG_FILE, 'garbage data {{{'); + + $config = $this->state->buildConfig([], true); + // Should get defaults + $this->assertEquals('80', $config->getDefaultHttpPort()); + } + + public function testBuildConfigWithEmptyConfigFile(): void + { + putenv('APPWRITE_INSTALLER_CONFIG'); + + file_put_contents(Server::INSTALLER_CONFIG_FILE, ''); + + $config = $this->state->buildConfig([], true); + $this->assertEquals('80', $config->getDefaultHttpPort()); + } + + public function testBuildConfigUseEnvFalseIgnoresEnvAndFile(): void + { + putenv('APPWRITE_INSTALLER_CONFIG=' . json_encode(['defaultHttpPort' => '9999'])); + file_put_contents(Server::INSTALLER_CONFIG_FILE, json_encode(['defaultHttpPort' => '8888'])); + + $config = $this->state->buildConfig([], false); + // Neither env nor file should be used + $this->assertEquals('80', $config->getDefaultHttpPort()); + } + + public function testBuildConfigWithJsonScalarEnvVar(): void + { + // A JSON scalar (string) is not an array, so decoding succeeds but is_array fails + putenv('APPWRITE_INSTALLER_CONFIG="just a string"'); + @unlink(Server::INSTALLER_CONFIG_FILE); + + $config = $this->state->buildConfig([], true); + $this->assertEquals('80', $config->getDefaultHttpPort()); + } + + public function testHashSensitiveValueWithNewlines(): void + { + // Newlines are not stripped by trim but surrounding whitespace is + $hash1 = $this->state->hashSensitiveValue("line1\nline2"); + $hash2 = $this->state->hashSensitiveValue("line1\nline2"); + $this->assertEquals($hash1, $hash2); + $this->assertNotEmpty($hash1); + } + + public function testHashSensitiveValueWithOnlyNewline(): void + { + // A newline is not whitespace that trim() removes? Actually trim() removes \n + // "\n" trimmed becomes "" => should return '' + $this->assertEquals('', $this->state->hashSensitiveValue("\n")); + } + + public function testIsValidEmailAddressWithUnicodeLocal(): void + { + // PHP's FILTER_VALIDATE_EMAIL does not support internationalized emails + $this->assertFalse($this->state->isValidEmailAddress('ünïcödé@example.com')); + } + + public function testIsValidEmailAddressWithDoubleAt(): void + { + $this->assertFalse($this->state->isValidEmailAddress('user@@example.com')); + } + + public function testIsValidEmailAddressWithSpaces(): void + { + $this->assertFalse($this->state->isValidEmailAddress('user @example.com')); + $this->assertFalse($this->state->isValidEmailAddress('user@ example.com')); + } + + public function testIsValidAccountNameWithOnlyTabs(): void + { + $this->assertFalse($this->state->isValidAccountName("\t\t")); + } + + public function testIsValidAccountNameWithMixedWhitespace(): void + { + $this->assertTrue($this->state->isValidAccountName(" a ")); + } + + public function testProgressFilePathWithSpecialCharsInId(): void + { + // The ID would normally be sanitized before this call, but the method itself + // just concatenates + $path = $this->state->progressFilePath('test-with-special'); + $this->assertStringContainsString('appwrite-install-test-with-special.json', $path); + } + + public function testProgressFilePathWithEmptyId(): void + { + $path = $this->state->progressFilePath(''); + $this->assertStringContainsString('appwrite-install-.json', $path); + } + + public function testWriteProgressFileCompletedDoesNotSetError(): void + { + $installId = 'test-noerror-' . uniqid(); + $this->trackProgressFile($installId); + + $this->state->writeProgressFile($installId, [ + 'step' => Server::STEP_ENV_VARS, + 'status' => Server::STATUS_COMPLETED, + 'message' => 'All good', + 'updatedAt' => time(), + ]); + + $data = $this->state->readProgressFile($installId); + $this->assertArrayNotHasKey('error', $data); + } + + public function testWriteProgressFileInProgressDoesNotSetError(): void + { + $installId = 'test-noerrip-' . uniqid(); + $this->trackProgressFile($installId); + + $this->state->writeProgressFile($installId, [ + 'step' => Server::STEP_DOCKER_COMPOSE, + 'status' => Server::STATUS_IN_PROGRESS, + 'message' => 'Working', + 'updatedAt' => time(), + ]); + + $data = $this->state->readProgressFile($installId); + $this->assertArrayNotHasKey('error', $data); + } + + public function testWriteProgressFileWithNoStep(): void + { + $installId = 'test-nostep-' . uniqid(); + $this->trackProgressFile($installId); + + $this->state->writeProgressFile($installId, [ + 'status' => Server::STATUS_IN_PROGRESS, + 'message' => 'No step provided', + 'updatedAt' => time(), + ]); + + $data = $this->state->readProgressFile($installId); + // No step key means no step should be recorded + $this->assertEmpty($data['steps']); + // But updatedAt should still be set + $this->assertArrayHasKey('updatedAt', $data); + } + + public function testFullInstallationLifecycle(): void + { + @unlink(Server::INSTALLER_LOCK_FILE); + $installId = 'lifecycle-' . uniqid(); + $this->trackProgressFile($installId); + + // 1. Reserve lock + $lockResult = $this->state->reserveGlobalLock($installId); + $this->assertEquals('ok', $lockResult); + + // 2. Write progress through multiple steps + $this->state->writeProgressFile($installId, [ + 'payload' => ['httpPort' => '80', 'database' => 'mongodb'], + 'step' => 'start', + 'status' => Server::STATUS_IN_PROGRESS, + 'message' => 'Started', + 'updatedAt' => time(), + ]); + + $this->state->writeProgressFile($installId, [ + 'step' => Server::STEP_ENV_VARS, + 'status' => Server::STATUS_COMPLETED, + 'message' => 'Env vars written', + 'updatedAt' => time(), + ]); + + $this->state->writeProgressFile($installId, [ + 'step' => Server::STEP_DOCKER_COMPOSE, + 'status' => Server::STATUS_COMPLETED, + 'message' => 'Compose generated', + 'updatedAt' => time(), + ]); + + $this->state->writeProgressFile($installId, [ + 'step' => Server::STEP_DOCKER_CONTAINERS, + 'status' => Server::STATUS_COMPLETED, + 'message' => 'Containers started', + 'updatedAt' => time(), + ]); + + // 3. Verify progress + $data = $this->state->readProgressFile($installId); + $this->assertCount(4, $data['steps']); // start + 3 steps + $this->assertArrayHasKey('payload', $data); + $this->assertArrayHasKey('startedAt', $data); + + // 4. Complete the lock + $this->state->updateGlobalLock($installId, Server::STATUS_COMPLETED); + + // 5. Verify a new install can now proceed + $newId = 'lifecycle-new-' . uniqid(); + $this->trackProgressFile($newId); + $newResult = $this->state->reserveGlobalLock($newId); + $this->assertEquals('ok', $newResult); + } +} diff --git a/tests/unit/Platform/Modules/Installer/Validator/AppDomainTest.php b/tests/unit/Platform/Modules/Installer/Validator/AppDomainTest.php new file mode 100644 index 0000000000..c453dcade4 --- /dev/null +++ b/tests/unit/Platform/Modules/Installer/Validator/AppDomainTest.php @@ -0,0 +1,168 @@ +validator = new AppDomain(); + } + + public function tearDown(): void + { + $this->validator = null; + } + + public function testDescription(): void + { + $this->assertNotEmpty($this->validator->getDescription()); + $this->assertIsString($this->validator->getDescription()); + } + + public function testIsArray(): void + { + $this->assertFalse($this->validator->isArray()); + } + + public function testType(): void + { + $this->assertEquals($this->validator::TYPE_STRING, $this->validator->getType()); + } + + public function testRejectsNonStringTypes(): void + { + $this->assertFalse($this->validator->isValid(null)); + $this->assertFalse($this->validator->isValid(false)); + $this->assertFalse($this->validator->isValid(true)); + $this->assertFalse($this->validator->isValid(123)); + $this->assertFalse($this->validator->isValid(12.34)); + $this->assertFalse($this->validator->isValid([])); + $this->assertFalse($this->validator->isValid(new \stdClass())); + } + + public function testRejectsEmptyString(): void + { + $this->assertFalse($this->validator->isValid('')); + } + + public function testRejectsWhitespaceOnly(): void + { + $this->assertFalse($this->validator->isValid(' ')); + $this->assertFalse($this->validator->isValid("\t")); + $this->assertFalse($this->validator->isValid("\n")); + } + + public function testAcceptsLocalhost(): void + { + $this->assertTrue($this->validator->isValid('localhost')); + } + + public function testAcceptsLocalhostWithPort(): void + { + $this->assertTrue($this->validator->isValid('localhost:8080')); + $this->assertTrue($this->validator->isValid('localhost:80')); + $this->assertTrue($this->validator->isValid('localhost:443')); + $this->assertTrue($this->validator->isValid('localhost:1')); + $this->assertTrue($this->validator->isValid('localhost:65535')); + } + + public function testAcceptsValidDomains(): void + { + $this->assertTrue($this->validator->isValid('example.com')); + $this->assertTrue($this->validator->isValid('sub.example.com')); + $this->assertTrue($this->validator->isValid('deep.sub.example.com')); + $this->assertTrue($this->validator->isValid('appwrite.io')); + $this->assertTrue($this->validator->isValid('my-app.example.org')); + } + + public function testAcceptsDomainsWithPort(): void + { + $this->assertTrue($this->validator->isValid('example.com:443')); + $this->assertTrue($this->validator->isValid('example.com:8080')); + $this->assertTrue($this->validator->isValid('sub.example.com:3000')); + } + + public function testAcceptsIPv4Addresses(): void + { + $this->assertTrue($this->validator->isValid('127.0.0.1')); + $this->assertTrue($this->validator->isValid('192.168.1.1')); + $this->assertTrue($this->validator->isValid('10.0.0.1')); + $this->assertTrue($this->validator->isValid('0.0.0.0')); + $this->assertTrue($this->validator->isValid('255.255.255.255')); + } + + public function testAcceptsIPv4WithPort(): void + { + $this->assertTrue($this->validator->isValid('127.0.0.1:8080')); + $this->assertTrue($this->validator->isValid('192.168.1.1:443')); + $this->assertTrue($this->validator->isValid('10.0.0.1:3000')); + } + + public function testAcceptsIPv6BracketNotation(): void + { + $this->assertTrue($this->validator->isValid('[::1]')); + $this->assertTrue($this->validator->isValid('[::1]:8080')); + $this->assertTrue($this->validator->isValid('[2001:db8::1]')); + $this->assertTrue($this->validator->isValid('[2001:db8::1]:443')); + // Scoped IPv6 with zone ID is not supported by FILTER_VALIDATE_IP + $this->assertFalse($this->validator->isValid('[fe80::1%25eth0]')); + } + + public function testRejectsInvalidDomains(): void + { + $this->assertFalse($this->validator->isValid('-invalid.com')); + $this->assertFalse($this->validator->isValid('invalid-.com')); + $this->assertFalse($this->validator->isValid('.example.com')); + } + + public function testRejectsInvalidPorts(): void + { + $this->assertFalse($this->validator->isValid('localhost:0')); + $this->assertFalse($this->validator->isValid('localhost:65536')); + $this->assertFalse($this->validator->isValid('localhost:99999')); + $this->assertFalse($this->validator->isValid('localhost:abc')); + $this->assertFalse($this->validator->isValid('localhost:-1')); + } + + public function testRejectsMultipleColonsWithoutBrackets(): void + { + $this->assertFalse($this->validator->isValid('::1')); + $this->assertFalse($this->validator->isValid('2001:db8::1')); + $this->assertFalse($this->validator->isValid('a:b:c')); + } + + public function testRejectsMalformedIPv6Brackets(): void + { + $this->assertFalse($this->validator->isValid('[')); + $this->assertFalse($this->validator->isValid('[]')); + $this->assertFalse($this->validator->isValid('[::1')); + $this->assertFalse($this->validator->isValid('::1]')); + $this->assertFalse($this->validator->isValid('[invalid')); + } + + public function testPortBoundaryValues(): void + { + $this->assertTrue($this->validator->isValid('localhost:1')); + $this->assertTrue($this->validator->isValid('localhost:65535')); + $this->assertFalse($this->validator->isValid('localhost:0')); + $this->assertFalse($this->validator->isValid('localhost:65536')); + } + + public function testTrimsWhitespace(): void + { + $this->assertTrue($this->validator->isValid(' localhost ')); + $this->assertTrue($this->validator->isValid(' example.com ')); + } + + public function testAcceptsEmptyPortSegment(): void + { + // 'localhost:' splits into host='localhost', port='' — empty port is skipped + $this->assertTrue($this->validator->isValid('localhost:')); + } +} diff --git a/tests/unit/Utopia/Request/Filters/V21Test.php b/tests/unit/Utopia/Request/Filters/V21Test.php new file mode 100644 index 0000000000..f514de71ee --- /dev/null +++ b/tests/unit/Utopia/Request/Filters/V21Test.php @@ -0,0 +1,376 @@ +filter = new V21(); + } + + public function tearDown(): void + { + } + + public static function functionsCreateTemplateDeploymentProvider(): array + { + return [ + 'convert version to type and reference' => [ + [ + 'templateId' => 'template123', + 'version' => '1.0.0', + ], + [ + 'templateId' => 'template123', + 'type' => 'tag', + 'reference' => '1.0.0', + ] + ], + 'handle version with semver string' => [ + [ + 'version' => 'v2.3.1', + 'templateId' => 'template456', + ], + [ + 'type' => 'tag', + 'reference' => 'v2.3.1', + 'templateId' => 'template456', + ] + ], + 'skip conversion when version is empty string' => [ + [ + 'templateId' => 'template123', + 'version' => '', + ], + [ + 'templateId' => 'template123', + 'version' => '', + ] + ], + 'skip conversion when version is missing' => [ + [ + 'templateId' => 'template123', + ], + [ + 'templateId' => 'template123', + ] + ], + 'preserve other fields when converting version' => [ + [ + 'templateId' => 'template123', + 'version' => '3.0.0', + 'activate' => true, + 'buildCommand' => 'npm run build', + ], + [ + 'templateId' => 'template123', + 'type' => 'tag', + 'reference' => '3.0.0', + 'activate' => true, + 'buildCommand' => 'npm run build', + ] + ], + ]; + } + + #[DataProvider('functionsCreateTemplateDeploymentProvider')] + public function testFunctionsCreateTemplateDeployment(array $content, array $expected): void + { + $model = 'functions.createTemplateDeployment'; + + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } + + public static function sitesCreateTemplateDeploymentProvider(): array + { + return [ + 'convert version to type and reference' => [ + [ + 'templateId' => 'site-template123', + 'version' => '2.0.0', + ], + [ + 'templateId' => 'site-template123', + 'type' => 'tag', + 'reference' => '2.0.0', + ] + ], + 'skip conversion when version is empty' => [ + [ + 'templateId' => 'site-template123', + 'version' => '', + ], + [ + 'templateId' => 'site-template123', + 'version' => '', + ] + ], + 'skip conversion when version is missing' => [ + [ + 'templateId' => 'site-template123', + ], + [ + 'templateId' => 'site-template123', + ] + ], + ]; + } + + #[DataProvider('sitesCreateTemplateDeploymentProvider')] + public function testSitesCreateTemplateDeployment(array $content, array $expected): void + { + $model = 'sites.createTemplateDeployment'; + + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } + + public static function functionsCreateProvider(): array + { + return [ + 'convert specification to buildSpecification and runtimeSpecification' => [ + [ + 'name' => 'test-function', + 'runtime' => 'node-18.0', + 'specification' => 's-1vcpu-512mb', + ], + [ + 'name' => 'test-function', + 'runtime' => 'node-18.0', + 'buildSpecification' => 's-1vcpu-512mb', + 'runtimeSpecification' => 's-1vcpu-512mb', + ] + ], + 'skip conversion when specification is empty' => [ + [ + 'name' => 'test-function', + 'runtime' => 'node-18.0', + 'specification' => '', + ], + [ + 'name' => 'test-function', + 'runtime' => 'node-18.0', + 'specification' => '', + ] + ], + 'skip conversion when specification is missing' => [ + [ + 'name' => 'test-function', + 'runtime' => 'node-18.0', + ], + [ + 'name' => 'test-function', + 'runtime' => 'node-18.0', + ] + ], + 'preserve other fields when converting specification' => [ + [ + 'name' => 'test-function', + 'specification' => 's-2vcpu-1gb', + 'timeout' => 30, + 'enabled' => true, + ], + [ + 'name' => 'test-function', + 'buildSpecification' => 's-2vcpu-1gb', + 'runtimeSpecification' => 's-2vcpu-1gb', + 'timeout' => 30, + 'enabled' => true, + ] + ], + ]; + } + + #[DataProvider('functionsCreateProvider')] + public function testFunctionsCreate(array $content, array $expected): void + { + $model = 'functions.create'; + + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } + + public static function sitesCreateProvider(): array + { + return [ + 'convert specification to buildSpecification and runtimeSpecification' => [ + [ + 'name' => 'test-site', + 'framework' => 'nextjs', + 'specification' => 's-1vcpu-512mb', + ], + [ + 'name' => 'test-site', + 'framework' => 'nextjs', + 'buildSpecification' => 's-1vcpu-512mb', + 'runtimeSpecification' => 's-1vcpu-512mb', + ] + ], + 'skip conversion when specification is empty' => [ + [ + 'name' => 'test-site', + 'specification' => '', + ], + [ + 'name' => 'test-site', + 'specification' => '', + ] + ], + 'skip conversion when specification is missing' => [ + [ + 'name' => 'test-site', + ], + [ + 'name' => 'test-site', + ] + ], + ]; + } + + #[DataProvider('sitesCreateProvider')] + public function testSitesCreate(array $content, array $expected): void + { + $model = 'sites.create'; + + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } + + public static function functionsUpdateProvider(): array + { + return [ + 'convert specification to buildSpecification and runtimeSpecification' => [ + [ + 'name' => 'updated-function', + 'specification' => 's-2vcpu-1gb', + ], + [ + 'name' => 'updated-function', + 'buildSpecification' => 's-2vcpu-1gb', + 'runtimeSpecification' => 's-2vcpu-1gb', + ] + ], + 'skip conversion when specification is missing' => [ + [ + 'name' => 'updated-function', + ], + [ + 'name' => 'updated-function', + ] + ], + ]; + } + + #[DataProvider('functionsUpdateProvider')] + public function testFunctionsUpdate(array $content, array $expected): void + { + $model = 'functions.update'; + + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } + + public static function sitesUpdateProvider(): array + { + return [ + 'convert specification to buildSpecification and runtimeSpecification' => [ + [ + 'name' => 'updated-site', + 'specification' => 's-2vcpu-1gb', + ], + [ + 'name' => 'updated-site', + 'buildSpecification' => 's-2vcpu-1gb', + 'runtimeSpecification' => 's-2vcpu-1gb', + ] + ], + 'skip conversion when specification is missing' => [ + [ + 'name' => 'updated-site', + ], + [ + 'name' => 'updated-site', + ] + ], + ]; + } + + #[DataProvider('sitesUpdateProvider')] + public function testSitesUpdate(array $content, array $expected): void + { + $model = 'sites.update'; + + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } + + public static function unmatchedModelProvider(): array + { + return [ + 'unmatched model passes through unchanged' => [ + 'databases.create', + [ + 'name' => 'test-database', + 'databaseId' => 'db123', + ], + [ + 'name' => 'test-database', + 'databaseId' => 'db123', + ] + ], + 'empty content for unmatched model' => [ + 'users.list', + [], + [] + ], + 'content with specification for unmatched model is not converted' => [ + 'deployments.create', + [ + 'specification' => 's-1vcpu-512mb', + 'name' => 'test', + ], + [ + 'specification' => 's-1vcpu-512mb', + 'name' => 'test', + ] + ], + 'content with version for unmatched model is not converted' => [ + 'databases.createDocument', + [ + 'version' => '1.0.0', + 'data' => 'test', + ], + [ + 'version' => '1.0.0', + 'data' => 'test', + ] + ], + ]; + } + + #[DataProvider('unmatchedModelProvider')] + public function testUnmatchedModel(string $model, array $content, array $expected): void + { + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } +} diff --git a/tests/unit/Utopia/Response/Filters/V21Test.php b/tests/unit/Utopia/Response/Filters/V21Test.php new file mode 100644 index 0000000000..fdff7fdf3f --- /dev/null +++ b/tests/unit/Utopia/Response/Filters/V21Test.php @@ -0,0 +1,488 @@ +filter = new V21(); + } + + public function tearDown(): void + { + } + + public static function functionProvider(): array + { + return [ + 'merge buildSpecification and runtimeSpecification into specification' => [ + [ + 'name' => 'test-function', + 'buildSpecification' => 's-1vcpu-512mb', + 'runtimeSpecification' => 's-1vcpu-256mb', + 'runtime' => 'node-18.0', + ], + [ + 'name' => 'test-function', + 'specification' => 's-1vcpu-512mb', + 'runtime' => 'node-18.0', + ] + ], + 'use buildSpecification when present' => [ + [ + 'buildSpecification' => 's-2vcpu-1gb', + 'runtimeSpecification' => 's-1vcpu-512mb', + ], + [ + 'specification' => 's-2vcpu-1gb', + ] + ], + 'fallback to specification when buildSpecification is missing' => [ + [ + 'specification' => 's-1vcpu-512mb', + 'runtimeSpecification' => 's-1vcpu-256mb', + ], + [ + 'specification' => 's-1vcpu-512mb', + ] + ], + 'handle missing both buildSpecification and specification' => [ + [ + 'name' => 'test-function', + 'runtimeSpecification' => 's-1vcpu-256mb', + ], + [ + 'name' => 'test-function', + 'specification' => null, + ] + ], + 'handle no spec fields at all' => [ + [ + 'name' => 'test-function', + 'runtime' => 'node-18.0', + ], + [ + 'name' => 'test-function', + 'specification' => null, + 'runtime' => 'node-18.0', + ] + ], + 'handle empty buildSpecification string' => [ + [ + 'buildSpecification' => '', + 'runtimeSpecification' => 's-1vcpu-256mb', + ], + [ + 'specification' => '', + ] + ], + ]; + } + + #[DataProvider('functionProvider')] + public function testFunction(array $content, array $expected): void + { + $model = Response::MODEL_FUNCTION; + + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } + + public static function functionListProvider(): array + { + return [ + 'convert list of functions' => [ + [ + 'total' => 2, + 'functions' => [ + [ + 'name' => 'function-1', + 'buildSpecification' => 's-1vcpu-512mb', + 'runtimeSpecification' => 's-1vcpu-256mb', + ], + [ + 'name' => 'function-2', + 'buildSpecification' => 's-2vcpu-1gb', + 'runtimeSpecification' => 's-1vcpu-512mb', + ], + ], + ], + [ + 'total' => 2, + 'functions' => [ + [ + 'name' => 'function-1', + 'specification' => 's-1vcpu-512mb', + ], + [ + 'name' => 'function-2', + 'specification' => 's-2vcpu-1gb', + ], + ], + ] + ], + 'handle empty function list' => [ + [ + 'total' => 0, + 'functions' => [], + ], + [ + 'total' => 0, + 'functions' => [], + ] + ], + 'handle single function in list' => [ + [ + 'total' => 1, + 'functions' => [ + [ + 'buildSpecification' => 's-1vcpu-512mb', + 'runtimeSpecification' => 's-1vcpu-256mb', + ], + ], + ], + [ + 'total' => 1, + 'functions' => [ + [ + 'specification' => 's-1vcpu-512mb', + ], + ], + ] + ], + ]; + } + + #[DataProvider('functionListProvider')] + public function testFunctionList(array $content, array $expected): void + { + $model = Response::MODEL_FUNCTION_LIST; + + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } + + public static function siteProvider(): array + { + return [ + 'merge buildSpecification and runtimeSpecification into specification' => [ + [ + 'name' => 'test-site', + 'buildSpecification' => 's-1vcpu-512mb', + 'runtimeSpecification' => 's-1vcpu-256mb', + 'framework' => 'nextjs', + ], + [ + 'name' => 'test-site', + 'specification' => 's-1vcpu-512mb', + 'framework' => 'nextjs', + ] + ], + 'use buildSpecification when present' => [ + [ + 'buildSpecification' => 's-2vcpu-1gb', + 'runtimeSpecification' => 's-1vcpu-512mb', + ], + [ + 'specification' => 's-2vcpu-1gb', + ] + ], + 'fallback to specification when buildSpecification is missing' => [ + [ + 'specification' => 's-1vcpu-512mb', + 'runtimeSpecification' => 's-1vcpu-256mb', + ], + [ + 'specification' => 's-1vcpu-512mb', + ] + ], + 'handle missing both buildSpecification and specification' => [ + [ + 'name' => 'test-site', + 'runtimeSpecification' => 's-1vcpu-256mb', + ], + [ + 'name' => 'test-site', + 'specification' => null, + ] + ], + 'handle no spec fields at all' => [ + [ + 'name' => 'test-site', + 'framework' => 'react', + ], + [ + 'name' => 'test-site', + 'specification' => null, + 'framework' => 'react', + ] + ], + ]; + } + + #[DataProvider('siteProvider')] + public function testSite(array $content, array $expected): void + { + $model = Response::MODEL_SITE; + + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } + + public static function siteListProvider(): array + { + return [ + 'convert list of sites' => [ + [ + 'total' => 2, + 'sites' => [ + [ + 'name' => 'site-1', + 'buildSpecification' => 's-1vcpu-512mb', + 'runtimeSpecification' => 's-1vcpu-256mb', + ], + [ + 'name' => 'site-2', + 'buildSpecification' => 's-2vcpu-1gb', + 'runtimeSpecification' => 's-1vcpu-512mb', + ], + ], + ], + [ + 'total' => 2, + 'sites' => [ + [ + 'name' => 'site-1', + 'specification' => 's-1vcpu-512mb', + ], + [ + 'name' => 'site-2', + 'specification' => 's-2vcpu-1gb', + ], + ], + ] + ], + 'handle empty site list' => [ + [ + 'total' => 0, + 'sites' => [], + ], + [ + 'total' => 0, + 'sites' => [], + ] + ], + 'handle single site in list' => [ + [ + 'total' => 1, + 'sites' => [ + [ + 'name' => 'my-site', + 'buildSpecification' => 's-1vcpu-512mb', + 'runtimeSpecification' => 's-1vcpu-256mb', + ], + ], + ], + [ + 'total' => 1, + 'sites' => [ + [ + 'name' => 'my-site', + 'specification' => 's-1vcpu-512mb', + ], + ], + ] + ], + ]; + } + + #[DataProvider('siteListProvider')] + public function testSiteList(array $content, array $expected): void + { + $model = Response::MODEL_SITE_LIST; + + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } + + public static function documentProvider(): array + { + return [ + 'cast $sequence to int' => [ + [ + '$id' => 'doc1', + '$sequence' => '123', + 'name' => 'test', + ], + [ + '$id' => 'doc1', + '$sequence' => 123, + 'name' => 'test', + ] + ], + 'non-numeric $sequence becomes 0' => [ + [ + '$id' => 'doc1', + '$sequence' => 'abc', + ], + [ + '$id' => 'doc1', + '$sequence' => 0, + ] + ], + 'nested relationship document' => [ + [ + '$id' => 'doc1', + '$sequence' => '1', + 'author' => [ + '$id' => 'doc2', + '$sequence' => '2', + 'name' => 'John', + ], + ], + [ + '$id' => 'doc1', + '$sequence' => 1, + 'author' => [ + '$id' => 'doc2', + '$sequence' => 2, + 'name' => 'John', + ], + ] + ], + 'nested array of relationship documents' => [ + [ + '$id' => 'doc1', + '$sequence' => '1', + 'comments' => [ + [ + '$id' => 'doc2', + '$sequence' => '2', + 'text' => 'hello', + ], + [ + '$id' => 'doc3', + '$sequence' => '3', + 'text' => 'world', + ], + ], + ], + [ + '$id' => 'doc1', + '$sequence' => 1, + 'comments' => [ + [ + '$id' => 'doc2', + '$sequence' => 2, + 'text' => 'hello', + ], + [ + '$id' => 'doc3', + '$sequence' => 3, + 'text' => 'world', + ], + ], + ] + ], + 'deeply nested relationships' => [ + [ + '$id' => 'doc1', + '$sequence' => '1', + 'author' => [ + '$id' => 'doc2', + '$sequence' => '2', + 'profile' => [ + '$id' => 'doc3', + '$sequence' => '3', + ], + ], + ], + [ + '$id' => 'doc1', + '$sequence' => 1, + 'author' => [ + '$id' => 'doc2', + '$sequence' => 2, + 'profile' => [ + '$id' => 'doc3', + '$sequence' => 3, + ], + ], + ] + ], + ]; + } + + #[DataProvider('documentProvider')] + public function testDocument(array $content, array $expected): void + { + $result = $this->filter->parse($content, Response::MODEL_DOCUMENT); + + $this->assertEquals($expected, $result); + } + + #[DataProvider('documentProvider')] + public function testRow(array $content, array $expected): void + { + $result = $this->filter->parse($content, Response::MODEL_ROW); + + $this->assertEquals($expected, $result); + } + + public static function defaultPassthroughProvider(): array + { + return [ + 'unmatched model passes through unchanged' => [ + Response::MODEL_DOCUMENT, + [ + 'name' => 'test-doc', + '$id' => 'doc123', + 'data' => 'some-value', + ], + [ + 'name' => 'test-doc', + '$id' => 'doc123', + 'data' => 'some-value', + ] + ], + 'empty content passes through unchanged' => [ + Response::MODEL_DOCUMENT, + [], + [] + ], + 'deployment model passes through unchanged' => [ + Response::MODEL_DEPLOYMENT, + [ + 'id' => 'deployment123', + 'buildSpecification' => 's-1vcpu-512mb', + 'runtimeSpecification' => 's-1vcpu-256mb', + ], + [ + 'id' => 'deployment123', + 'buildSpecification' => 's-1vcpu-512mb', + 'runtimeSpecification' => 's-1vcpu-256mb', + ] + ], + ]; + } + + #[DataProvider('defaultPassthroughProvider')] + public function testDefaultPassthrough(string $model, array $content, array $expected): void + { + $result = $this->filter->parse($content, $model); + + $this->assertEquals($expected, $result); + } +}