Skip to content

Laravel 13 compatibility (Wave 4 PM)#38

Draft
thekevinm wants to merge 1 commit intomainfrom
shift/laravel-13
Draft

Laravel 13 compatibility (Wave 4 PM)#38
thekevinm wants to merge 1 commit intomainfrom
shift/laravel-13

Conversation

@thekevinm
Copy link
Copy Markdown
Contributor

Summary

Bumps df-mcp-server to Laravel 13.7 / PHPUnit 11. Composer-only change — no source patches were required.

composer.json

  • php: >=8.3 -> ^8.3
  • Add dreamfactory/df-core: ~1.0.4 (previously implicit via host app, now explicit since the package extends BaseRestService, BaseServiceConfigModel, Controller from df-core)
  • Add laravel/helpers: ^1.8 to polyfill array_get / camel_case / array_except (defensive — none currently used in src/, but aligned with the rest of the upgrade campaign so consumers are insulated against future siblings)
  • Move test deps to require-dev and pin to L13 stack:
    • laravel/framework: ^13.7
    • phpunit/phpunit: ^11.5.3
    • orchestra/testbench: ^11.0
    • mockery/mockery: ^1.6
    • nunomaduro/collision: ^8.6

Why no source changes

Surveyed for all 45 wave invariants. Clean across the board:

  • No DispatchesJobs trait, no dispatchNow calls
  • No CorsService imports (Fruitcake still works in L13.7 anyway)
  • No Illuminate\Database\Connection|Builder|Grammar extensions (the OAuth + stream layer is plain Eloquent + Guzzle)
  • No getDates() overrides on HasAttributes users
  • No setupBeforeClass/setUp casing bugs (no tests in this package)
  • No withTablePrefix()/compileTableExists/getDoctrineDriver callers
  • No ConnectionInterface test stubs
  • No phpunit.xml schema bump needed (no test config exists)

ServiceProvider already uses prependMiddleware with a pushMiddleware fallback — both are still in L13's Illuminate\Contracts\Http\Kernel.

Validation

Stage 1 (isolated install) on dreamfactory_web_1:

  • composer validate --strict clean
  • composer install resolves cleanly with path-repos for df-core (1.0.99), df-system (0.6.99) on shift/laravel-13
  • All 10 namespaced classes load
  • 3 helper polyfills present (array_get/camel_case/array_except)
  • Installed: laravel/framework 13.7.0, phpunit 11.5.55, testbench 11.1.0, helpers 1.8.3

Stage 2 (host-app integration) against dreamfactory/dreamfactory@shift-173254:

  • Path-repos: df-core, df-system, df-database, df-sqldb, df-user, df-email, df-file, df-mcp-server (all on shift/laravel-13)
  • Strip-list: df-oauth (private), df-aws/df-azure/df-rackspace (pin df-file ~0.8), df-mongo-logs (jenssegers pin), df-git (graham-campbell pin)
  • package:discover succeeds (df-mcp-server's ServiceProvider auto-registers)
  • All 10 classes + 3 helpers verified under L13.7.0

Out of scope

  • Source-level migration of any array_get/camel_case/array_except to Arr::get/Str::camel/Arr::except — origin/main HEAD already cleaned the one prior site; polyfill stays in for defense in depth.
  • The daemon (daemon/dist/utils/utils.js) is a separate Node.js artifact and is unaffected by Laravel.

Test plan

  • CI green on shift/laravel-13
  • Merge after parent branch (dreamfactory/dreamfactory@shift-173254) lands and exposes a real composer install smoke
  • Remove df-mcp-server from any remaining wave strip-lists once this PR is merged

Bump dependency matrix for Laravel 13.7:
- Tighten php requirement to ^8.3
- Add dreamfactory/df-core ~1.0.4 (was implicit, now explicit)
- Add laravel/helpers ^1.8 for array_get/camel_case/array_except polyfills
- Move test deps to require-dev: laravel/framework ^13.7,
  phpunit/phpunit ^11.5.3, orchestra/testbench ^11.0,
  mockery/mockery ^1.6, nunomaduro/collision ^8.6

No source changes required — package owns no Connection/Builder/Grammar
extensions, no DispatchesJobs trait, no CorsService imports, no getDates
overrides, no setupBeforeClass typos. ServiceProvider, controllers, models,
and the daemon client all use stable Laravel public APIs.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant