jskelet 0.2.4 → 0.2.5
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 +132 -132
- package/CHANGELOG.md +8 -0
- package/LICENSE +21 -21
- package/bin/jskelet.mjs +103 -103
- package/docs/01-baslangic.md +285 -285
- package/docs/02-mimari.md +287 -287
- package/docs/03-routing.md +480 -480
- package/docs/04-render-ve-sablonlar.md +490 -490
- package/docs/05-islands.md +482 -482
- package/docs/06-cache.md +1209 -1209
- package/docs/08-build.md +366 -366
- package/docs/09-dev-araclari.md +335 -335
- package/docs/10-dagitim.md +329 -329
- package/docs/12-panel-ve-oturum.md +384 -384
- package/docs/README.md +105 -105
- package/docs/en/01-getting-started.md +292 -292
- package/docs/en/02-architecture.md +305 -305
- package/docs/en/03-routing.md +497 -497
- package/docs/en/04-rendering.md +504 -504
- package/docs/en/05-islands.md +492 -492
- package/docs/en/06-caching.md +1239 -1239
- package/docs/en/07-configuration.md +986 -986
- package/docs/en/08-build.md +383 -383
- package/docs/en/09-dev-tools.md +342 -342
- package/docs/en/10-deployment.md +332 -332
- package/docs/en/11-migration.md +359 -359
- package/docs/en/12-dashboards-and-sessions.md +392 -392
- package/docs/en/README.md +112 -112
- package/package.json +102 -102
- package/src/build/ensure-build.mjs +15 -15
- package/src/build/paths.mjs +143 -143
- package/src/build/resolve-peer.mjs +36 -36
- package/src/build/tasks/client.mjs +268 -268
- package/src/build/tasks/css.mjs +124 -124
- package/src/build/tasks/fonts.mjs +146 -146
- package/src/build/tasks/icons.mjs +224 -224
- package/src/build/tasks/images.mjs +244 -244
- package/src/build/tasks/precompress.mjs +78 -78
- package/src/client/cache-panel/i18n.js +670 -670
- package/src/client/cache-panel/login.html +74 -74
- package/src/client/cache-panel/panel.css +756 -756
- package/src/client/cache-panel/panel.html +308 -308
- package/src/client/cache-panel/panel.js +915 -915
- package/src/client/devtools/report.html +185 -185
- package/src/client/devtools/report.js +725 -725
- package/src/client/dom.js +95 -95
- package/src/client/form.js +192 -192
- package/src/client/index.js +35 -35
- package/src/client/registry.js +297 -297
- package/src/client/safe-image.js +91 -91
- package/src/client/store.js +36 -36
- package/src/client/swap.js +188 -188
- package/src/config/pattern.js +107 -107
- package/src/http/control-flow.js +71 -71
- package/src/http/cookies.js +257 -257
- package/src/http/request-cache.js +46 -46
- package/src/http/request-context.js +162 -162
- package/src/index.js +83 -83
- package/src/init.mjs +221 -221
- package/src/runtime/alias-hooks.mjs +119 -119
- package/src/runtime/register.mjs +4 -4
- package/src/server/assets.js +147 -147
- package/src/server/cache-deps.js +42 -42
- package/src/server/cache-panel.js +759 -759
- package/src/server/cloudflare.js +607 -595
- package/src/server/create-app.js +291 -291
- package/src/server/data-cache.js +462 -462
- package/src/server/dev/report.js +369 -369
- package/src/server/dev/socket.js +170 -170
- package/src/server/dev/version-check.mjs +139 -139
- package/src/server/html-cache.js +817 -817
- 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 +62 -62
- package/src/server/middleware/headers.js +37 -37
- package/src/server/middleware/redirects.js +32 -32
- package/src/server/middleware/static-precompressed.js +100 -100
- package/src/server/middleware/upstream-proxy.js +141 -141
- package/src/server/prewarm.js +601 -601
- package/src/server/redis.js +569 -569
- package/src/server/router.js +128 -128
- package/src/server/status-page.js +164 -164
- package/src/server/upstream-limiter.js +376 -376
- package/src/server/upstream-tracking.js +166 -166
- package/src/start.mjs +7 -7
- package/src/templates/layout.ejs +44 -44
- package/src/version.mjs +31 -31
- package/src/views/components/loader.js +85 -85
- package/src/views/helpers/html.js +102 -102
- package/src/views/helpers/tags.js +245 -245
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
-
<meta name="robots" content="noindex, nofollow, noarchive, nosnippet" />
|
|
7
|
-
<meta name="referrer" content="no-referrer" />
|
|
8
|
-
<title>Cache · JSkelet</title>
|
|
9
|
-
<link rel="icon" href="logo.png" />
|
|
10
|
-
<link rel="stylesheet" href="panel.css" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="login">
|
|
13
|
-
<form id="form" autocomplete="off">
|
|
14
|
-
<div class="brand">
|
|
15
|
-
<img src="logo.png" alt="" width="30" height="30" />
|
|
16
|
-
<span class="wordmark">JSkelet</span>
|
|
17
|
-
<span id="language"></span>
|
|
18
|
-
</div>
|
|
19
|
-
<h1 data-i18n="login.title">Cache panel</h1>
|
|
20
|
-
<p data-i18n-html="login.lead"></p>
|
|
21
|
-
<input
|
|
22
|
-
id="password"
|
|
23
|
-
type="password"
|
|
24
|
-
name="password"
|
|
25
|
-
maxlength="64"
|
|
26
|
-
spellcheck="false"
|
|
27
|
-
autocomplete="off"
|
|
28
|
-
data-i18n-ph="login.placeholder"
|
|
29
|
-
autofocus
|
|
30
|
-
/>
|
|
31
|
-
<button class="primary" type="submit" data-i18n="login.submit">Unlock</button>
|
|
32
|
-
<p class="error" id="error"></p>
|
|
33
|
-
<p class="hint m0" data-i18n="login.hint"></p>
|
|
34
|
-
</form>
|
|
35
|
-
|
|
36
|
-
<script type="module">
|
|
37
|
-
import { applyTranslations, languageSelect, t } from "./i18n.js";
|
|
38
|
-
|
|
39
|
-
const form = document.getElementById("form");
|
|
40
|
-
const input = document.getElementById("password");
|
|
41
|
-
const error = document.getElementById("error");
|
|
42
|
-
|
|
43
|
-
// Giriş sayfasında da seçici var: panele girmeden önce dilini seçen biri
|
|
44
|
-
// içeride aynı dili bulmalı, tercih `localStorage`'da taşınıyor.
|
|
45
|
-
document
|
|
46
|
-
.getElementById("language")
|
|
47
|
-
.append(languageSelect(() => applyTranslations()));
|
|
48
|
-
|
|
49
|
-
applyTranslations();
|
|
50
|
-
|
|
51
|
-
form.addEventListener("submit", async (event) => {
|
|
52
|
-
event.preventDefault();
|
|
53
|
-
error.textContent = "";
|
|
54
|
-
|
|
55
|
-
const response = await fetch("login", {
|
|
56
|
-
method: "POST",
|
|
57
|
-
headers: { "Content-Type": "application/json" },
|
|
58
|
-
body: JSON.stringify({ password: input.value }),
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
if (response.ok) {
|
|
62
|
-
location.reload();
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Yasaklandıysa sunucu artık 404 dönüyor; kalan deneme sayısı
|
|
67
|
-
// bilinçli olarak bildirilmiyor.
|
|
68
|
-
error.textContent = t(response.status === 404 ? "login.tooMany" : "login.invalid");
|
|
69
|
-
input.value = "";
|
|
70
|
-
input.focus();
|
|
71
|
-
});
|
|
72
|
-
</script>
|
|
73
|
-
</body>
|
|
74
|
-
</html>
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<meta name="robots" content="noindex, nofollow, noarchive, nosnippet" />
|
|
7
|
+
<meta name="referrer" content="no-referrer" />
|
|
8
|
+
<title>Cache · JSkelet</title>
|
|
9
|
+
<link rel="icon" href="logo.png" />
|
|
10
|
+
<link rel="stylesheet" href="panel.css" />
|
|
11
|
+
</head>
|
|
12
|
+
<body class="login">
|
|
13
|
+
<form id="form" autocomplete="off">
|
|
14
|
+
<div class="brand">
|
|
15
|
+
<img src="logo.png" alt="" width="30" height="30" />
|
|
16
|
+
<span class="wordmark">JSkelet</span>
|
|
17
|
+
<span id="language"></span>
|
|
18
|
+
</div>
|
|
19
|
+
<h1 data-i18n="login.title">Cache panel</h1>
|
|
20
|
+
<p data-i18n-html="login.lead"></p>
|
|
21
|
+
<input
|
|
22
|
+
id="password"
|
|
23
|
+
type="password"
|
|
24
|
+
name="password"
|
|
25
|
+
maxlength="64"
|
|
26
|
+
spellcheck="false"
|
|
27
|
+
autocomplete="off"
|
|
28
|
+
data-i18n-ph="login.placeholder"
|
|
29
|
+
autofocus
|
|
30
|
+
/>
|
|
31
|
+
<button class="primary" type="submit" data-i18n="login.submit">Unlock</button>
|
|
32
|
+
<p class="error" id="error"></p>
|
|
33
|
+
<p class="hint m0" data-i18n="login.hint"></p>
|
|
34
|
+
</form>
|
|
35
|
+
|
|
36
|
+
<script type="module">
|
|
37
|
+
import { applyTranslations, languageSelect, t } from "./i18n.js";
|
|
38
|
+
|
|
39
|
+
const form = document.getElementById("form");
|
|
40
|
+
const input = document.getElementById("password");
|
|
41
|
+
const error = document.getElementById("error");
|
|
42
|
+
|
|
43
|
+
// Giriş sayfasında da seçici var: panele girmeden önce dilini seçen biri
|
|
44
|
+
// içeride aynı dili bulmalı, tercih `localStorage`'da taşınıyor.
|
|
45
|
+
document
|
|
46
|
+
.getElementById("language")
|
|
47
|
+
.append(languageSelect(() => applyTranslations()));
|
|
48
|
+
|
|
49
|
+
applyTranslations();
|
|
50
|
+
|
|
51
|
+
form.addEventListener("submit", async (event) => {
|
|
52
|
+
event.preventDefault();
|
|
53
|
+
error.textContent = "";
|
|
54
|
+
|
|
55
|
+
const response = await fetch("login", {
|
|
56
|
+
method: "POST",
|
|
57
|
+
headers: { "Content-Type": "application/json" },
|
|
58
|
+
body: JSON.stringify({ password: input.value }),
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
if (response.ok) {
|
|
62
|
+
location.reload();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Yasaklandıysa sunucu artık 404 dönüyor; kalan deneme sayısı
|
|
67
|
+
// bilinçli olarak bildirilmiyor.
|
|
68
|
+
error.textContent = t(response.status === 404 ? "login.tooMany" : "login.invalid");
|
|
69
|
+
input.value = "";
|
|
70
|
+
input.focus();
|
|
71
|
+
});
|
|
72
|
+
</script>
|
|
73
|
+
</body>
|
|
74
|
+
</html>
|