İçeriğe geç

SSR Değişiklik Günlüğü

  • Sıfır-config lenty-ssr CLI'ı ve runLentySsrProjectRender() / verifyLentySsrProjectOutput() runner yüzeyi eklendi; build edilmiş html ağaçları, @lentystyle/hybrid/site üzerinden otomatik .luis source keşfiyle dist-ssr içine render ediliyor.
  • htmlGuardMode config alanı eklendi ('ssr' strict script allowlist | 'hybrid' tam sayfa tarama); runner, build edilmiş uygulama sayfaları için varsayılan olarak 'hybrid' kullanıyor.
  • Proje config'ine htmlDirName eklendi (varsayılan 'dist'); defaultRuntimeOptions artık runner tarafından otomatik uygulanıyor.
  • Proje seviyesindeki ssr bloğuna payloadMode: 'external-json' eklendi; lenty-ssr runner her route için <route-token>.payload.json dosyasını assetBaseUrl altına yazıyor ve html'den JSON'u inline etmek yerine bu dosyaya referans veriyor. Request-time LentySsrConfig her zaman 'inline-json' olarak kalıyor.
  • Opsiyonel <!-- lenty-ssr --> html placeholder'ı eklendi; mevcut olduğunda, üretilen tag'ler </head>/prepend fallback'ine düşmek yerine bu placeholder'ın yerine yazılıyor.
  • Route id pattern'lerini .luis sourceDirs/sources'a eşleyen ssr.routes config bloğu request-time render için eklendi.
  • createLentySsrFromProjectConfig() ve createLentySsrProdFromProjectConfig() eklendi; renderRoute(routeId, html) yapılandırılmış source'ları mtime tabanlı bir içerik cache'iyle çözüyor, defaultRuntimeOptions'ı otomatik uyguluyor ve prod cache options nesnesinin tamamını (ttlMs, cacheStore, compileCache, maxEntries) alttaki integration'a iletiyor.
  • Eşleşmeyen route'lar, boş eşlemeler ve okunamayan source dosyaları, route id'yi taşıyan project-config-invalid ile reject oluyor.
  • Production cache'e ttlMs expiry, invalidate(routeId), clear() ve stats() (hit/miss/entry sayıları) eklendi, ayrıca pluggable async cacheStore contract'ı eklendi; varsayılan in-memory store önceki recency/eviction davranışını değiştirmeden koruyor.
  • Production SSR cache key'leri artık htmlGuardMode'u içeriyor ve deprecated adapter/rewritePolicy alanlarını artık içermiyor.
  • Paylaşılan, sınırlı (bounded) .luis parse cache'i eklendi (LentySsrCompileCache, createLentySsrCompileCache(), getLentySsrCompileCacheStats()); hybrid'in route'tan bağımsız compile cache'ini (artık @lentystyle/hybrid üzerinden public) .luis source içerik hash'ine göre anahtarlayarak birçok render çağrısı arasında yeniden kullanıyor. Her route'a özel observed-rule eşleştirmesi her request'in html'ine karşı hâlâ her zaman taze çalışıyor, bu yüzden cache asla eski veya eksik CSS'e yol açamaz.
  • createLentySsrProdIntegration(), createLentySsrProd(), createLentySsrFromProjectConfig() ve createLentySsrProdFromProjectConfig() artık varsayılan olarak bir compile cache'i otomatik oluşturup yeniden kullanıyor (yeni compileCache option/param ile devre dışı bırakılabilir veya açıkça paylaşılabilir); renderLentySsrRequest()/renderLentySsrAdapterRequest() bunu opsiyonel bir sondaki argüman olarak kabul ediyor, tek seferlik direct çağrılar için varsayılan olarak cache'siz kalıyor.
  • Sabit kodlu guard-rejected, compile-failed, adapter-callback-failed ve project-config-invalid kodlarına sahip public LentySsrError hata sınıfı eklendi, ayrıca isLentySsrError() guard'ı eklendi.
  • adapter ve rewritePolicy config alanları artık ignore ediliyor ve sabit varsayılanlara resolve oluyor; ikisi de ileride tip yüzeyinden kaldırılacak.
  • scriptNonce config alanı eklendi; yalnızca SSR bootstrap <script src> tag'ine yazılıyor (hiçbir zaman çalıştırılabilir olmayan inline JSON payload script'ine yazılmıyor).
  • SSR public changelog senkronizasyonu artık phase kayıtlarını seçmeden önce paket-kökü changelog tarihlerini okuyor ve release-prep girdilerini public topic'lerden atlıyor.
  • luis.config.mjs içindeki ssr bloğu için paylaşılan proje config yükleme desteği eklendi.
  • SSR request render akışı hybrid derleme öncesinde strict ortak guard doğrulamasına bağlandı.
  • Server-render payload'ları için script doğrulamasının strict kalmasını sağlayan SSR'a özel HTML modu eklendi.
  • Standalone SSR type build akışlarının manuel prebuild sırası olmadan guard dağıtım tiplerini çözebilmesi sağlandı.