jskelet 0.6.2 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +136 -136
- package/CHANGELOG.md +620 -596
- package/LICENSE +21 -21
- package/bin/jskelet.mjs +130 -130
- package/docs/01-baslangic.md +291 -291
- package/docs/02-mimari.md +310 -309
- package/docs/03-routing.md +515 -515
- package/docs/04-render-ve-sablonlar.md +661 -661
- package/docs/05-islands.md +486 -486
- package/docs/06-cache.md +1443 -1423
- package/docs/07-yapilandirma.md +12 -6
- package/docs/08-build.md +429 -428
- package/docs/09-dev-araclari.md +364 -364
- package/docs/10-dagitim.md +338 -338
- package/docs/12-panel-ve-oturum.md +478 -478
- package/docs/README.md +83 -83
- package/docs/en/01-getting-started.md +298 -298
- package/docs/en/02-architecture.md +329 -328
- package/docs/en/03-routing.md +531 -531
- package/docs/en/04-rendering.md +669 -669
- package/docs/en/05-islands.md +497 -497
- package/docs/en/06-caching.md +1453 -1431
- package/docs/en/07-configuration.md +1219 -1214
- package/docs/en/08-build.md +447 -446
- package/docs/en/09-dev-tools.md +373 -373
- package/docs/en/10-deployment.md +340 -340
- package/docs/en/11-migration.md +398 -398
- package/docs/en/12-dashboards-and-sessions.md +488 -488
- package/docs/en/README.md +87 -87
- package/package.json +137 -137
- package/src/build/ensure-build.mjs +19 -19
- package/src/build/paths.mjs +153 -153
- package/src/build/resolve-peer.mjs +36 -36
- package/src/build/tasks/client.mjs +349 -349
- package/src/build/tasks/css.mjs +235 -235
- package/src/build/tasks/fonts.mjs +146 -146
- package/src/build/tasks/icons.mjs +357 -357
- package/src/build/tasks/images.mjs +244 -244
- package/src/build/tasks/precompress.mjs +78 -78
- package/src/build/tasks/templates.mjs +20 -20
- package/src/client/admin/i18n.js +764 -764
- package/src/client/admin/login.html +74 -74
- package/src/client/admin/panel.css +809 -809
- package/src/client/admin/panel.html +495 -495
- package/src/client/admin/panel.js +1251 -1251
- package/src/client/devtools/report.html +185 -185
- package/src/client/devtools/report.js +745 -745
- package/src/client/devtools/seo.js +628 -628
- package/src/client/dom.js +95 -95
- package/src/client/form.js +192 -192
- package/src/client/index.js +45 -45
- package/src/client/registry.js +305 -305
- package/src/client/safe-image.js +91 -91
- package/src/client/shared-cookie.js +225 -225
- package/src/client/store.js +36 -36
- package/src/client/swap.js +188 -188
- package/src/compile/codegen.js +336 -336
- package/src/compile/compile-all.js +149 -149
- package/src/compile/errors.js +66 -66
- package/src/compile/expr.js +409 -409
- package/src/compile/index.js +17 -17
- package/src/compile/parse.js +541 -541
- package/src/compile/resolve.js +211 -211
- package/src/compile/scan-exports.js +51 -51
- package/src/config/defaults.js +17 -1
- package/src/config/index.js +13 -0
- package/src/config/pattern.js +107 -107
- package/src/generate.mjs +163 -163
- package/src/http/control-flow.js +71 -71
- package/src/http/cookies-entry.js +21 -21
- package/src/http/cookies.js +277 -277
- package/src/http/request-cache.js +46 -46
- package/src/http/request-context.js +165 -165
- package/src/http/shared-cookie.js +178 -178
- package/src/index.js +101 -101
- package/src/init.mjs +230 -230
- package/src/migrate/apply.mjs +262 -262
- package/src/migrate/babel.mjs +79 -79
- package/src/migrate/classify.mjs +155 -155
- package/src/migrate/config.mjs +126 -126
- package/src/migrate/fs-walk.mjs +191 -191
- package/src/migrate/parse.mjs +26 -26
- package/src/migrate/scan.mjs +177 -177
- package/src/migrate/transform/expr-source.mjs +168 -168
- package/src/migrate/transform/island.mjs +67 -67
- package/src/migrate/transform/jsx-to-component.mjs +302 -302
- package/src/migrate/transform/jsx-to-jsk.mjs +330 -330
- package/src/migrate/transform/page-split.mjs +435 -435
- package/src/migrate/write.mjs +81 -81
- package/src/migrate.mjs +171 -171
- package/src/runtime/alias-hooks.mjs +119 -119
- package/src/runtime/register.mjs +4 -4
- package/src/server/admin/actions.js +229 -229
- package/src/server/admin/auth.js +125 -125
- package/src/server/admin/event-log.js +151 -151
- package/src/server/admin/gate.js +209 -209
- package/src/server/admin/inventory.js +188 -188
- package/src/server/admin/mount.js +56 -56
- package/src/server/admin/router.js +216 -216
- package/src/server/admin/snapshot.js +241 -241
- package/src/server/assets.js +147 -147
- package/src/server/auth/handoff.js +309 -309
- package/src/server/cache-blob.js +70 -0
- package/src/server/cache-deps.js +42 -42
- package/src/server/cache-vary.js +113 -113
- package/src/server/cloudflare.js +607 -607
- package/src/server/create-app.js +366 -366
- package/src/server/data-cache.js +553 -462
- package/src/server/dev/report.js +485 -485
- package/src/server/dev/socket.js +170 -170
- package/src/server/dev/version-check.mjs +139 -139
- package/src/server/disk-cache.js +233 -0
- package/src/server/ejs-adapter.js +59 -59
- package/src/server/html-cache.js +1196 -1122
- package/src/server/image-optimizer.js +500 -407
- package/src/server/logs/access-middleware.js +66 -66
- package/src/server/logs/file-sink.js +193 -66
- package/src/server/logs/pipeline.js +165 -158
- package/src/server/logs/s3-put.js +214 -214
- package/src/server/logs/s3-sink.js +112 -112
- package/src/server/metadata.js +102 -102
- package/src/server/middleware/compression.js +205 -205
- package/src/server/middleware/csrf.js +134 -134
- package/src/server/middleware/dev-gate.js +75 -75
- package/src/server/middleware/headers.js +37 -37
- package/src/server/middleware/redirects.js +32 -32
- package/src/server/middleware/robots-txt.js +341 -341
- package/src/server/middleware/static-precompressed.js +121 -100
- package/src/server/middleware/trailing-slash.js +53 -53
- package/src/server/middleware/upstream-proxy.js +141 -141
- package/src/server/og-image.js +356 -356
- package/src/server/port-guard.js +255 -255
- package/src/server/prewarm.js +1082 -1058
- package/src/server/redis.js +588 -569
- package/src/server/render.js +4 -4
- package/src/server/router.js +157 -157
- package/src/server/status-page.js +265 -265
- package/src/server/upstream-limiter.js +376 -376
- package/src/server/upstream-tracking.js +166 -166
- package/src/shared/cookie-domain.js +66 -66
- package/src/start.mjs +22 -22
- package/src/templates/layout.ejs +30 -30
- package/src/templates/layout.jsk +30 -30
- package/src/version.mjs +31 -31
- package/src/views/components/loader.js +101 -101
- package/src/views/helpers/html.js +102 -102
- package/src/views/helpers/tags.js +375 -375
- package/types/config/defaults.d.ts +15 -1
- package/types/config/index.d.ts +8 -0
- package/types/server/cache-blob.d.ts +13 -0
- package/types/server/data-cache.d.ts +9 -0
- package/types/server/disk-cache.d.ts +36 -0
- package/types/server/html-cache.d.ts +26 -3
- package/types/server/logs/file-sink.d.ts +16 -5
- package/types/server/redis.d.ts +2 -1
package/docs/README.md
CHANGED
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
# JSkelet belgeleri
|
|
2
|
-
|
|
3
|
-
JSkelet, SEO ve hız odaklı siteler için "framework'süz hissettiren" bir
|
|
4
|
-
framework: Express 5 + build-time `.jsk` ile sunucuda tam HTML üretir (EJS
|
|
5
|
-
opsiyonel legacy peer), etkileşimi vanilla JS island'larla ekler, CSS'i
|
|
6
|
-
Tailwind v4 ile tek bir stylesheet'e derler ve ISR yerine süreç belleğinde
|
|
7
|
-
yaşayan, stale-while-revalidate'li bir HTML TTL cache kullanır. React yok;
|
|
8
|
-
framework kaynağı düz JavaScript + JSDoc'tur. Uygulama tarafında client
|
|
9
|
-
island/entry'ler TypeScript yazılabilir ve paket `.d.ts` yayınlar.
|
|
10
|
-
|
|
11
|
-
Bu dizin framework'ün tam referansıdır. Sıralı okumak için baştan başlayın;
|
|
12
|
-
belirli bir konuyu arıyorsanız doğrudan ilgili başlığa gidin.
|
|
13
|
-
|
|
14
|
-
Aynı belgelerin İngilizcesi [`docs/en/`](./en/README.md) altında. İki sürüm elle
|
|
15
|
-
eşlenik tutuluyor; birini değiştiriyorsan diğerini de değiştir.
|
|
16
|
-
|
|
17
|
-
## Sıralı okuma
|
|
18
|
-
|
|
19
|
-
| Belge | Konu |
|
|
20
|
-
| --- | --- |
|
|
21
|
-
| [01-baslangic.md](./01-baslangic.md) | Kurulum, `jskelet init`, ilk route, ilk island, dizin yapısı, CLI komutları |
|
|
22
|
-
| [02-mimari.md](./02-mimari.md) | Mimari kararlar ve gerekçeleri: island modeli, tam sunucu HTML'i, cache stratejisi, middleware sırası |
|
|
23
|
-
| [03-routing.md](./03-routing.md) | Route modülü sözleşmesi, yükleme sırası, controller sözleşmesi, `ctx`, `notFound`/`redirect`, config redirects/rewrites |
|
|
24
|
-
| [04-render-ve-sablonlar.md](./04-render-ve-sablonlar.md) | `.jsk` layout/sayfalar, otomatik bileşen kaydı, `html`/`tags`, metadata → `<head>`, hook'lar; EJS legacy |
|
|
25
|
-
| [05-islands.md](./05-islands.md) | `data-island` sözleşmesi, hidrasyon stratejileri, `client/entries/*`, `createStore`, DOM yardımcıları, `startSafeImages` |
|
|
26
|
-
| [06-cache.md](./06-cache.md) | `withHtmlCache`, `revalidate`, stale-while-revalidate, cache anahtarı, `X-JSkelet-Cache`, istek içi cache, degraded render, prewarm |
|
|
27
|
-
| [07-yapilandirma.md](./07-yapilandirma.md) | `jskelet.config.mjs` tam referansı, `source` desen sözdizimi, ortam değişkenleri tablosu |
|
|
28
|
-
| [08-build.md](./08-build.md) | Build hattı, manifest, hash'li varlıklar, CSS/Tailwind `@source`, fontlar, ikon sprite, görsel optimizasyonu, precompress |
|
|
29
|
-
| [09-dev-araclari.md](./09-dev-araclari.md) | `jskelet dev` akışı, watch dizinleri, CSS hot-swap, devtools overlay (Alt+D, SEO highlight), rapor sayfası, dev gate |
|
|
30
|
-
| [10-dagitim.md](./10-dagitim.md) | Prod build + start, ortam değişkenleri, Docker, ters proxy, sağlık kontrolü |
|
|
31
|
-
| [11-tasima.md](./11-tasima.md) | Next.js'ten taşıma: karşılık tablosu ve adım adım plan |
|
|
32
|
-
| [12-panel-ve-oturum.md](./12-panel-ve-oturum.md) | Kişiye özel sayfalar: `private: true`, imzalı cookie oturumu, CSRF, `fragment()`, parça takası ve form döngüsü |
|
|
33
|
-
|
|
34
|
-
## Konuya göre hızlı erişim
|
|
35
|
-
|
|
36
|
-
- **Bir sayfa nasıl eklenir?** → [03-routing.md](./03-routing.md) ve
|
|
37
|
-
[04-render-ve-sablonlar.md](./04-render-ve-sablonlar.md)
|
|
38
|
-
- **Bir butona tıklandığında bir şey olsun istiyorum** →
|
|
39
|
-
[05-islands.md](./05-islands.md)
|
|
40
|
-
- **Sayfa neden `MISS` dönüyor / neden eski veri görüyorum?** →
|
|
41
|
-
[06-cache.md](./06-cache.md)
|
|
42
|
-
- **Oturuma bağlı bir sayfa nasıl yazılır?** →
|
|
43
|
-
[12-panel-ve-oturum.md](./12-panel-ve-oturum.md)
|
|
44
|
-
- **Hangi config alanı ne yapıyor?** → [07-yapilandirma.md](./07-yapilandirma.md)
|
|
45
|
-
- **Stil çıkmıyor / ikon görünmüyor** → [08-build.md](./08-build.md)
|
|
46
|
-
- **Yayına alma** → [10-dagitim.md](./10-dagitim.md)
|
|
47
|
-
|
|
48
|
-
## Çalışan örnekler
|
|
49
|
-
|
|
50
|
-
Üçü de çalışır durumda; belgelerdeki örneklerin çoğu buralardan alınmıştır.
|
|
51
|
-
|
|
52
|
-
**`examples/minimal/`** — iki route, bir bileşen, bir island, minimal config.
|
|
53
|
-
Framework'ün en küçük çalışan hâli.
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
npm --prefix examples/minimal install
|
|
57
|
-
npm --prefix examples/minimal run dev
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
**`examples/blog/`** — dinamik route (`/blog/:slug`), etiket sayfaları,
|
|
61
|
-
`redirects`/`rewrites`/`headers`/`cache` yapılandırmasının tamamı, fragment ile
|
|
62
|
-
gelen sekme panelleri, form gönderimi, prewarm, `robots.txt`/`sitemap.xml`/`rss.xml`,
|
|
63
|
-
dinamik OG görselleri (`/og/blog/:slug.png`) ve dört island (tema, sekme, arama,
|
|
64
|
-
form).
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
npm --prefix examples/blog install
|
|
68
|
-
npm --prefix examples/blog run dev
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
**`examples/dashboard/`** — diğer ikisinin tersi eksen: kişiye özel sayfalar.
|
|
72
|
-
İmzalı cookie ile giriş, `private: true` korumalı panel, sayfalı tablo
|
|
73
|
-
fragment'i, CSRF'li mutasyon formu ve temizlik fonksiyonu döndüren bir island.
|
|
74
|
-
Public bir tanıtım sayfası da var, böylece aynı uygulamada önbelleklenen ve
|
|
75
|
-
`no-store` dönen iki yanıt yan yana görülüyor.
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
npm --prefix examples/dashboard install
|
|
79
|
-
npm --prefix examples/dashboard run dev
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
Her üç örnekte `node smoke.mjs` sunucu ayaktayken uçların beklendiği gibi
|
|
83
|
-
yanıt verdiğini doğrular.
|
|
1
|
+
# JSkelet belgeleri
|
|
2
|
+
|
|
3
|
+
JSkelet, SEO ve hız odaklı siteler için "framework'süz hissettiren" bir
|
|
4
|
+
framework: Express 5 + build-time `.jsk` ile sunucuda tam HTML üretir (EJS
|
|
5
|
+
opsiyonel legacy peer), etkileşimi vanilla JS island'larla ekler, CSS'i
|
|
6
|
+
Tailwind v4 ile tek bir stylesheet'e derler ve ISR yerine süreç belleğinde
|
|
7
|
+
yaşayan, stale-while-revalidate'li bir HTML TTL cache kullanır. React yok;
|
|
8
|
+
framework kaynağı düz JavaScript + JSDoc'tur. Uygulama tarafında client
|
|
9
|
+
island/entry'ler TypeScript yazılabilir ve paket `.d.ts` yayınlar.
|
|
10
|
+
|
|
11
|
+
Bu dizin framework'ün tam referansıdır. Sıralı okumak için baştan başlayın;
|
|
12
|
+
belirli bir konuyu arıyorsanız doğrudan ilgili başlığa gidin.
|
|
13
|
+
|
|
14
|
+
Aynı belgelerin İngilizcesi [`docs/en/`](./en/README.md) altında. İki sürüm elle
|
|
15
|
+
eşlenik tutuluyor; birini değiştiriyorsan diğerini de değiştir.
|
|
16
|
+
|
|
17
|
+
## Sıralı okuma
|
|
18
|
+
|
|
19
|
+
| Belge | Konu |
|
|
20
|
+
| --- | --- |
|
|
21
|
+
| [01-baslangic.md](./01-baslangic.md) | Kurulum, `jskelet init`, ilk route, ilk island, dizin yapısı, CLI komutları |
|
|
22
|
+
| [02-mimari.md](./02-mimari.md) | Mimari kararlar ve gerekçeleri: island modeli, tam sunucu HTML'i, cache stratejisi, middleware sırası |
|
|
23
|
+
| [03-routing.md](./03-routing.md) | Route modülü sözleşmesi, yükleme sırası, controller sözleşmesi, `ctx`, `notFound`/`redirect`, config redirects/rewrites |
|
|
24
|
+
| [04-render-ve-sablonlar.md](./04-render-ve-sablonlar.md) | `.jsk` layout/sayfalar, otomatik bileşen kaydı, `html`/`tags`, metadata → `<head>`, hook'lar; EJS legacy |
|
|
25
|
+
| [05-islands.md](./05-islands.md) | `data-island` sözleşmesi, hidrasyon stratejileri, `client/entries/*`, `createStore`, DOM yardımcıları, `startSafeImages` |
|
|
26
|
+
| [06-cache.md](./06-cache.md) | `withHtmlCache`, `revalidate`, stale-while-revalidate, cache anahtarı, `X-JSkelet-Cache`, istek içi cache, degraded render, prewarm |
|
|
27
|
+
| [07-yapilandirma.md](./07-yapilandirma.md) | `jskelet.config.mjs` tam referansı, `source` desen sözdizimi, ortam değişkenleri tablosu |
|
|
28
|
+
| [08-build.md](./08-build.md) | Build hattı, manifest, hash'li varlıklar, CSS/Tailwind `@source`, fontlar, ikon sprite, görsel optimizasyonu, precompress |
|
|
29
|
+
| [09-dev-araclari.md](./09-dev-araclari.md) | `jskelet dev` akışı, watch dizinleri, CSS hot-swap, devtools overlay (Alt+D, SEO highlight), rapor sayfası, dev gate |
|
|
30
|
+
| [10-dagitim.md](./10-dagitim.md) | Prod build + start, ortam değişkenleri, Docker, ters proxy, sağlık kontrolü |
|
|
31
|
+
| [11-tasima.md](./11-tasima.md) | Next.js'ten taşıma: karşılık tablosu ve adım adım plan |
|
|
32
|
+
| [12-panel-ve-oturum.md](./12-panel-ve-oturum.md) | Kişiye özel sayfalar: `private: true`, imzalı cookie oturumu, CSRF, `fragment()`, parça takası ve form döngüsü |
|
|
33
|
+
|
|
34
|
+
## Konuya göre hızlı erişim
|
|
35
|
+
|
|
36
|
+
- **Bir sayfa nasıl eklenir?** → [03-routing.md](./03-routing.md) ve
|
|
37
|
+
[04-render-ve-sablonlar.md](./04-render-ve-sablonlar.md)
|
|
38
|
+
- **Bir butona tıklandığında bir şey olsun istiyorum** →
|
|
39
|
+
[05-islands.md](./05-islands.md)
|
|
40
|
+
- **Sayfa neden `MISS` dönüyor / neden eski veri görüyorum?** →
|
|
41
|
+
[06-cache.md](./06-cache.md)
|
|
42
|
+
- **Oturuma bağlı bir sayfa nasıl yazılır?** →
|
|
43
|
+
[12-panel-ve-oturum.md](./12-panel-ve-oturum.md)
|
|
44
|
+
- **Hangi config alanı ne yapıyor?** → [07-yapilandirma.md](./07-yapilandirma.md)
|
|
45
|
+
- **Stil çıkmıyor / ikon görünmüyor** → [08-build.md](./08-build.md)
|
|
46
|
+
- **Yayına alma** → [10-dagitim.md](./10-dagitim.md)
|
|
47
|
+
|
|
48
|
+
## Çalışan örnekler
|
|
49
|
+
|
|
50
|
+
Üçü de çalışır durumda; belgelerdeki örneklerin çoğu buralardan alınmıştır.
|
|
51
|
+
|
|
52
|
+
**`examples/minimal/`** — iki route, bir bileşen, bir island, minimal config.
|
|
53
|
+
Framework'ün en küçük çalışan hâli.
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
npm --prefix examples/minimal install
|
|
57
|
+
npm --prefix examples/minimal run dev
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**`examples/blog/`** — dinamik route (`/blog/:slug`), etiket sayfaları,
|
|
61
|
+
`redirects`/`rewrites`/`headers`/`cache` yapılandırmasının tamamı, fragment ile
|
|
62
|
+
gelen sekme panelleri, form gönderimi, prewarm, `robots.txt`/`sitemap.xml`/`rss.xml`,
|
|
63
|
+
dinamik OG görselleri (`/og/blog/:slug.png`) ve dört island (tema, sekme, arama,
|
|
64
|
+
form).
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npm --prefix examples/blog install
|
|
68
|
+
npm --prefix examples/blog run dev
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**`examples/dashboard/`** — diğer ikisinin tersi eksen: kişiye özel sayfalar.
|
|
72
|
+
İmzalı cookie ile giriş, `private: true` korumalı panel, sayfalı tablo
|
|
73
|
+
fragment'i, CSRF'li mutasyon formu ve temizlik fonksiyonu döndüren bir island.
|
|
74
|
+
Public bir tanıtım sayfası da var, böylece aynı uygulamada önbelleklenen ve
|
|
75
|
+
`no-store` dönen iki yanıt yan yana görülüyor.
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
npm --prefix examples/dashboard install
|
|
79
|
+
npm --prefix examples/dashboard run dev
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Her üç örnekte `node smoke.mjs` sunucu ayaktayken uçların beklendiği gibi
|
|
83
|
+
yanıt verdiğini doğrular.
|