@lentystyle/ssr, CSS ve runtime payload'ı route HTML snapshot'ına enjekte eden SSR orchestration katmanıdır. Framework HTML'ini kendi başına render etmez; mevcut bir HTML snapshot ve o route'a ait .luis source listesi tüketir.
Compiler -> Hybrid -> SSR -> HTML ResponseEn Kısa Kurulum
Section titled “En Kısa Kurulum”pnpm add @lentystyle/ssrnpm install @lentystyle/ssryarn add @lentystyle/ssrSSR Ne Yapar
Section titled “SSR Ne Yapar”- Route HTML snapshot'ı alır
- O route için
.luissource listesini compile eder - Üretilen CSS'i HTML içine enjekte eder
- Route payload'ını
<script type="application/json">olarak yazar - Framework veya server entegrasyonu için adapter seam'leri sunar
- Aynı process içinde tekrar eden render'lar için optional in-memory cache sunar
- Request HTML ve source envelope girdilerini
@lentystyle/core/guard/ssrile strict modda validate eder
SSR Ne Yapmaz
Section titled “SSR Ne Yapmaz”- Framework HTML'ini sizin yerinize render etmez
- Browser runtime'ı başlatmaz
- Route source'larını auto-discover etmez
- Distributed cache veya kalıcı storage sunmaz
Guard Profili
Section titled “Guard Profili”SSR request akışı @lentystyle/core/guard/ssr kullanır.
Bu adapter:
- varsayılan olarak
strictpreset'ini kullanır htmlMode: 'ssr'zorlar- LentyStyle SSR payload ve bootstrap allowlist'ini yalnızca SSR akışında strict tutar
- geçersiz request HTML veya source envelope girdilerini hybrid compile başlamadan önce bloklar
Default guard akışı
Section titled “Default guard akışı”High-level SSR helper'larında guard'ı ayrıca etkinleştirmezsiniz; request render akışının içinde çalışır.
import { renderLentySsrSnapshot } from '@lentystyle/ssr'
await renderLentySsrSnapshot({}, { routeId: '/docs/', html: '<html><head></head><body><div class="card"></div></body></html>', sources: [ { sourceId: 'docs.luis', source: '.card { color: #0f172a; }', }, ],})Yerleşik davranış sabittir:
preset: 'strict'htmlMode: 'ssr'
Ne zaman özel guard davranışı gerekir
Section titled “Ne zaman özel guard davranışı gerekir”Public renderLentySsrSnapshot() ve createLentySsrIntegration() yüzeyleri doğrudan guardPolicy kabul etmez. Özel doğrulama gerekiyorsa guard'ı SSR'in bir katman üstünde ayrı çalıştırmalı ya da daha low-level orchestration'a inmelisiniz.
import { scanSnapshotEnvelope } from '@lentystyle/core/guard/ssr'
const findings = scanSnapshotEnvelope( { routeId: '/docs/', html: '<html><head></head><body><div class="card"></div></body></html>', sources: [ { sourceId: 'docs.luis', source: '.card { color: #0f172a; }', }, ], }, { preset: 'strict', htmlMode: 'ssr' },)
console.log(findings.length) // 0Önerilen Başlangıç
Section titled “Önerilen Başlangıç”- Route HTML snapshot'ı üretin
.luissource listesini hazırlayın- Doğru SSR yüzeyini seçin
result.htmlçıktısını response'a yazın
Mevcut yüzeyler:
renderLentySsrSnapshot()-> tek seferlik rendercreateLentySsrIntegration()-> yeniden kullanılabilir doğrudan yüzeycreateLentySsrFrameworkAdapter()-> framework seam'icreateLentySsrProd()-> process-local cache destekli helper
Hızlı Örnek
Section titled “Hızlı Örnek”import { renderLentySsrSnapshot } from '@lentystyle/ssr'
const result = await renderLentySsrSnapshot( { mode: 'ssr' }, { routeId: '/docs/', html: '<html><head></head><body><div class="card"></div></body></html>', sources: [ { sourceId: 'site.luis', source: '.card { color: red; }', }, ], },)Çağrıdan sonra:
result.cssüretilen CSS'i içerirresult.runtimePayloadhybrid route payload'ını içerirresult.htmlnihai enjekte edilmiş HTML'i içerir
luis.config.mjs Ne Zaman Önemli
Section titled “luis.config.mjs Ne Zaman Önemli”Low-level SSR API'leri object tabanlıdır ve luis.config.mjs gerektirmez. Ama app-level preview ve project helper akışlarında ortak SSR ayarlarını aynı config dosyasında tutmak daha faydalıdır.
import { defineLuisConfig } from '@lentystyle/core'
export default defineLuisConfig({ ssr: { mode: 'ssr', outDirName: 'dist-ssr', defaultRuntimeOptions: '', include: ['**/*.html'], },})SSR İçinde Runtime ve Guard Ayrımı
Section titled “SSR İçinde Runtime ve Guard Ayrımı”SSR de convenience ve hardening rollerini ayrı tutar:
- browser runtime client tarafında optional ve convenience odaklı kalır
@lentystyle/core/guard/ssr, server tarafında gelen HTML snapshot ve source envelope girdisini sertleştirir
Bu ayrım sayesinde SSR, payload ve bootstrap HTML konusunda strict kalabilirken browser runtime kendi standalone policy modelini korur.
Sonraki Adım
Section titled “Sonraki Adım”- Request-level ve project-level ayarlar için
Config - Browser tarafı convenience davranışı için
Browser Runtime - Fail-closed validation modeli için
@lentystyle/guarddokümanları