Skip to content

feat(support): promote Macroable + add Conditionable & Pipeline (task 3.2) - #36

Open
agissept wants to merge 1 commit into
migration/3.1-contractsfrom
migration/3.2-macroable-conditionable-pipeline
Open

feat(support): promote Macroable + add Conditionable & Pipeline (task 3.2)#36
agissept wants to merge 1 commit into
migration/3.1-contractsfrom
migration/3.2-macroable-conditionable-pipeline

Conversation

@agissept

Copy link
Copy Markdown
Member

Wave 3.2 roadmap framework-first (blocked-by: 3.1 Contracts, PR #35base PR ini di-stack di atas #35, retarget ke master setelah #35 merge).

Tujuan: sediakan idiom fondasi L13 yang dibutuhkan wave berikutnya. Drop-in verbatim dari referensi Laravel 13 (v13.30.1) — nol logika baru buatan sendiri.

Isi

  • Macroable (Support\Traits\Macroable) — signature L13: mixin(), flushMacros(), Closure di-bind ke instance/kelas di __call/__callStatic. MacroableTrait jadi alias backward-compatible (use Macroable) → 8 konsumen fork (Str, Arr, Cache\Repository, HtmlBuilder, FormBuilder, facade Response, …) tak putus.
  • Conditionable (when/unless) + HigherOrderWhenProxy — trait fondasi baru, tak ada di 4.2.
  • Pipeline (send/through/via/then/thenReturn/pipe/finally/withinTransaction/setContainer) + Hub + PipelineServiceProvider + Contracts\Pipeline\{Pipeline,Hub}.
  • Contracts\Support\DeferrableProvider (marker) — dibutuhkan provider.

Catatan

  • Pipeline inert sampai konsumen (Router/HTTP Kernel/Bus/Queue) direshape lepas dari model filter 4.2 — sesuai sekuens roadmap; sengaja dilanda lebih awal sebagai engine bersama. PipelineServiceProvider belum diregister di mana pun (tak ada perubahan perilaku runtime).
  • Konsumen internal tetap di MacroableTrait (alias), bukan dimigrasi ke Macroable. Itu memang fungsi shim: migrasi callsite bertahap; ratchet macroable_trait mencegah pemakaian baru.
  • Nol dependency baru — semua di dalam pohon Illuminate\*, autoload PSR-4 sudah cover.

Verifikasi

  • Test baru: tests/Support/SupportMacroableConditionablePipelineTest.php (5 test — Macroable + alias, when/unless, Pipeline + contract).
  • Full suite hijau (1640 test); convergence-ratchet lolos.

🤖 Generated with Claude Code

… 3.2)

Wave 3.2 dari roadmap framework-first (blocked-by 3.1 Contracts).
Drop-in verbatim dari referensi Laravel 13 (v13.30.1) — memutus
langkah berikutnya yang butuh idiom `->when()` / `::macro()` L13.

- Macroable (Support\Traits\Macroable): signature L13 (mixin/flushMacros,
  Closure bind ke instance/kelas). `MacroableTrait` jadi alias
  backward-compatible (`use Macroable`) → 8 konsumen fork tak putus.
- Conditionable (when/unless) + HigherOrderWhenProxy — trait fondasi baru,
  tak ada di 4.2.
- Pipeline (send/through/via/then/thenReturn/...) + Hub +
  PipelineServiceProvider + Contracts\Pipeline\{Pipeline,Hub}. Inert sampai
  konsumen (Router/Kernel/Bus/Queue) direshape di wave berikutnya.
- Contracts\Support\DeferrableProvider (marker) — dibutuhkan provider.

Test: tests/Support/SupportMacroableConditionablePipelineTest.php (5).
Full suite hijau; convergence-ratchet lolos.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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