@brightsideoy/kama 0.1.0-alpha.46 → 0.1.0-alpha.50
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/defaults/definitions/nodes/article.yaml +1 -0
- package/defaults/definitions/nodes/event.yaml +1 -0
- package/defaults/definitions/nodes/page.yaml +1 -0
- package/defaults/definitions/nodes/product.yaml +1 -0
- package/definitions/editor/default.ts +1 -1
- package/definitions/editor/header.ts +3 -0
- package/definitions/editor/minimal.ts +1 -1
- package/dist/assets/index-BpDJdGFw.css +1 -0
- package/dist/assets/index-BsVawKU0.js +1313 -0
- package/dist/index.html +2 -2
- package/dist/index.js +71 -28
- package/package.json +1 -1
- package/dist/assets/index-Bk-A6B6d.js +0 -1309
- package/dist/assets/index-nbx_ufxX.css +0 -1
package/dist/index.html
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>KAMA</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-BsVawKU0.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BpDJdGFw.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="app"></div>
|
package/dist/index.js
CHANGED
|
@@ -4433,6 +4433,7 @@ var Or = /* @__PURE__ */ a({
|
|
|
4433
4433
|
label: "Article",
|
|
4434
4434
|
inTree: !1,
|
|
4435
4435
|
hasCanvas: !0,
|
|
4436
|
+
directLinking: !0,
|
|
4436
4437
|
regions: { content: { label: "Content" } },
|
|
4437
4438
|
allowedElements: [
|
|
4438
4439
|
"header",
|
|
@@ -4475,6 +4476,7 @@ var Or = /* @__PURE__ */ a({
|
|
|
4475
4476
|
label: "Event",
|
|
4476
4477
|
inTree: !1,
|
|
4477
4478
|
hasCanvas: !0,
|
|
4479
|
+
directLinking: !0,
|
|
4478
4480
|
regions: { main: { label: "Content" } },
|
|
4479
4481
|
allowedElements: ["title-set", "text-block"],
|
|
4480
4482
|
tabs: { settings: {
|
|
@@ -4548,6 +4550,7 @@ var Or = /* @__PURE__ */ a({
|
|
|
4548
4550
|
inTree: !0,
|
|
4549
4551
|
inVault: !0,
|
|
4550
4552
|
hasCanvas: !0,
|
|
4553
|
+
directLinking: !0,
|
|
4551
4554
|
defaultLayout: "single-column",
|
|
4552
4555
|
allowedBlocks: [
|
|
4553
4556
|
"header",
|
|
@@ -4648,6 +4651,7 @@ var Or = /* @__PURE__ */ a({
|
|
|
4648
4651
|
inTree: !1,
|
|
4649
4652
|
inVault: !0,
|
|
4650
4653
|
hasCanvas: !1,
|
|
4654
|
+
directLinking: !0,
|
|
4651
4655
|
layout: {
|
|
4652
4656
|
columns: "3fr 1fr",
|
|
4653
4657
|
areas: [["main", "sidebar"]]
|
|
@@ -8694,7 +8698,46 @@ function Ri(e, t = {}) {
|
|
|
8694
8698
|
}
|
|
8695
8699
|
return n;
|
|
8696
8700
|
}
|
|
8697
|
-
function zi(e) {
|
|
8701
|
+
async function zi(e, t) {
|
|
8702
|
+
if (typeof t == "string") {
|
|
8703
|
+
if (!t.includes("#node:") && !t.includes("data-node-id") && !t.includes("#asset:") && !t.includes("data-asset-id")) return t;
|
|
8704
|
+
let n = /* @__PURE__ */ new Set();
|
|
8705
|
+
for (let e of t.matchAll(/(?:#node:|data-node-id=["'])([^"'\s>]+)/gi)) n.add(e[1]);
|
|
8706
|
+
let r = /* @__PURE__ */ new Set();
|
|
8707
|
+
for (let e of t.matchAll(/(?:#asset:|data-asset-id=["'])([^"'\s>]+)/gi)) r.add(e[1]);
|
|
8708
|
+
if (n.size === 0 && r.size === 0) return t;
|
|
8709
|
+
let i = Array.from(n).map(() => "?").join(","), a = n.size > 0 ? await e.prepare(`SELECT id, slug FROM content_nodes WHERE id IN (${i})`).all(...n) : [], o = /* @__PURE__ */ new Map();
|
|
8710
|
+
for (let e of a || []) o.set(String(e.id), String(e.slug || "").replace(/^\/+|\/+$/g, ""));
|
|
8711
|
+
let s = Array.from(r).map(() => "?").join(","), c = r.size > 0 ? await e.prepare("SELECT id, cdnUrl, storageKeyPrivate FROM assets WHERE id IN (" + s + ")").all(...r) : [], l = /* @__PURE__ */ new Map();
|
|
8712
|
+
for (let e of c || []) l.set(String(e.id), e.cdnUrl || (e.storageKeyPrivate ? `/media/${e.storageKeyPrivate}` : ""));
|
|
8713
|
+
let u = /* @__PURE__ */ new Map(), d = /<a\b([^>]*?)>/gi;
|
|
8714
|
+
for (let n of t.matchAll(d)) {
|
|
8715
|
+
let t = n[1], r = t.match(/data-node-id=["']([^"']+)["']/i), i = t.match(/data-tree-id=["']([^"']+)["']/i);
|
|
8716
|
+
if (!r || !i) continue;
|
|
8717
|
+
let a = await e.prepare("SELECT id as treeNodeId FROM tree_nodes WHERE contentId = ? AND treeId = ? LIMIT 1").get(r[1], i[1]);
|
|
8718
|
+
a?.treeNodeId && u.set(`${r[1]}:${i[1]}`, await Vi(e, String(a.treeNodeId), i[1]));
|
|
8719
|
+
}
|
|
8720
|
+
return t.replace(d, (e, t) => {
|
|
8721
|
+
let n = t.match(/data-node-id=["']([^"']+)["']/i), r = t.match(/data-asset-id=["']([^"']+)["']/i), i = t.match(/href=["']([^"']+)["']/i);
|
|
8722
|
+
if (i?.[1].startsWith("mailto:")) return `<a${t.replace(/\s+target=["'][^"']*["']/i, "")}>`;
|
|
8723
|
+
let a = i?.[1].match(/^#node:(.+)$/i), s = i?.[1].match(/^#asset:(.+)$/i), c = r?.[1] || s?.[1], d = n?.[1] || a?.[1];
|
|
8724
|
+
if (!d && !c) return e;
|
|
8725
|
+
if (c && !d) {
|
|
8726
|
+
let n = l.get(c);
|
|
8727
|
+
return n && i ? `<a${t.replace(/href=["'][^"']*["']/i, `href="${n}"`).replace(/data-asset-id=["'][^"']*["']/i, `data-asset-id="${c}"`)}>` : e;
|
|
8728
|
+
}
|
|
8729
|
+
let f = t.match(/data-tree-id=["']([^"']+)["']/i), p = d, m = f ? u.get(`${p}:${f[1]}`) : void 0, h = o.get(p), g = m || (h === void 0 ? "#" : `/${h}`);
|
|
8730
|
+
return i ? `<a${t.replace(/href=["'][^"']*["']/i, `href="${g || "/"}"`)}>` : e;
|
|
8731
|
+
});
|
|
8732
|
+
}
|
|
8733
|
+
if (Array.isArray(t)) return Promise.all(t.map((t) => zi(e, t)));
|
|
8734
|
+
if (t && typeof t == "object") {
|
|
8735
|
+
let n = await Promise.all(Object.entries(t).map(async ([t, n]) => [t, await zi(e, n)]));
|
|
8736
|
+
return Object.fromEntries(n);
|
|
8737
|
+
}
|
|
8738
|
+
return t;
|
|
8739
|
+
}
|
|
8740
|
+
function Bi(e) {
|
|
8698
8741
|
let t = e.socialImage;
|
|
8699
8742
|
if (!t || typeof t != "object") return null;
|
|
8700
8743
|
let n = (e, t) => {
|
|
@@ -8725,7 +8768,7 @@ function zi(e) {
|
|
|
8725
8768
|
])
|
|
8726
8769
|
};
|
|
8727
8770
|
}
|
|
8728
|
-
async function
|
|
8771
|
+
async function Vi(e, t, n) {
|
|
8729
8772
|
if (!t) return "";
|
|
8730
8773
|
let r = await e.prepare("\n WITH RECURSIVE ancestor_path(id, parentId, slug, level) AS (\n SELECT t.id, t.parentId, c.slug, 0\n FROM tree_nodes t\n INNER JOIN content_nodes c ON t.contentId = c.id\n WHERE t.id = ? AND t.treeId = ?\n UNION ALL\n SELECT t.id, t.parentId, c.slug, ap.level + 1\n FROM tree_nodes t\n INNER JOIN content_nodes c ON t.contentId = c.id\n INNER JOIN ancestor_path ap ON t.id = ap.parentId\n WHERE t.treeId = ?\n )\n SELECT slug FROM ancestor_path ORDER BY level DESC\n ").all(t, n, n), i = Array.isArray(r) ? r : r?.results || [], a = [];
|
|
8731
8774
|
for (let e of i) {
|
|
@@ -8734,7 +8777,7 @@ async function Bi(e, t, n) {
|
|
|
8734
8777
|
}
|
|
8735
8778
|
return "/" + a.join("/");
|
|
8736
8779
|
}
|
|
8737
|
-
async function
|
|
8780
|
+
async function Hi(e, t, n, r, i) {
|
|
8738
8781
|
let a = {}, o = null;
|
|
8739
8782
|
if (t) {
|
|
8740
8783
|
let n = await e.prepare("\n WITH RECURSIVE ancestor_path(id, contentId, title, slug, parentId, level) AS (\n SELECT t.id, t.contentId, c.title, c.slug, t.parentId, 0\n FROM tree_nodes t\n INNER JOIN content_nodes c ON t.contentId = c.id\n WHERE t.id = ? OR c.id = ?\n UNION ALL\n SELECT t.id, t.contentId, c.title, c.slug, t.parentId, ap.level + 1\n FROM tree_nodes t\n INNER JOIN content_nodes c ON t.contentId = c.id\n INNER JOIN ancestor_path ap ON t.id = ap.parentId\n )\n SELECT c.dataJson, c.draftDataJson \n FROM ancestor_path ap\n INNER JOIN content_nodes c ON ap.contentId = c.id\n ORDER BY ap.level ASC\n ").all(t, t), i = Array.isArray(n) ? n : n?.results || [], s = /* @__PURE__ */ new Set([
|
|
@@ -8794,7 +8837,7 @@ Ni.get("/*", async (e) => {
|
|
|
8794
8837
|
WHERE cn.slug = ? ${l === null ? "" : "AND nc.channelId = ?"}
|
|
8795
8838
|
`, o = l === null ? [n] : [n, l], s = await t.prepare(a).all(...o), c = Array.isArray(s) ? s : s?.results || [];
|
|
8796
8839
|
if (c.length > 0) for (let e of c) {
|
|
8797
|
-
let n = (await
|
|
8840
|
+
let n = (await Vi(t, e.treeNodeId, e.treeId)).replace(/^\/+|\/+$/g, ""), r = i.replace(/^\/+|\/+$/g, "");
|
|
8798
8841
|
if (n === r || r === "home" && (n === "" || n === "home")) {
|
|
8799
8842
|
h = e, g = e;
|
|
8800
8843
|
break;
|
|
@@ -8812,7 +8855,7 @@ Ni.get("/*", async (e) => {
|
|
|
8812
8855
|
LIMIT 1
|
|
8813
8856
|
`).get(...e);
|
|
8814
8857
|
}
|
|
8815
|
-
let v = g?.treeId || _ || "main-nav", y = g?.parentId || null, b = g?.treeNodeId ? await
|
|
8858
|
+
let v = g?.treeId || _ || "main-nav", y = g?.parentId || null, b = g?.treeNodeId ? await Vi(t, g.treeNodeId, v) : `/${(h.slug || "").replace(/^\/+|\/+$/g, "")}`, x = {
|
|
8816
8859
|
id: h.id,
|
|
8817
8860
|
title: h.title,
|
|
8818
8861
|
slug: h.slug,
|
|
@@ -8830,11 +8873,11 @@ Ni.get("/*", async (e) => {
|
|
|
8830
8873
|
k = typeof A == "string" ? JSON.parse(A) : A;
|
|
8831
8874
|
} catch {}
|
|
8832
8875
|
k.disabledRegions && (T = k.disabledRegions), O = k.hidden === !0 || k.hidden === 1 || k.hidden === "1" || k.hidden === "true", E = k.startShowingAt || null, D = k.stopShowingAt || null;
|
|
8833
|
-
let j = k.layoutId, ee = j && j !== "inherit", { resolvedLayoutId: te, inheritedFields: ne } = await
|
|
8876
|
+
let j = k.layoutId, ee = j && j !== "inherit", { resolvedLayoutId: te, inheritedFields: ne } = await Hi(t, y, v, o, w), re = ee ? j : te || C.defaultLayout || null;
|
|
8834
8877
|
for (let [e, t] of Object.entries(ne)) (k[e] === void 0 || k[e] === null || k[e] === "" || k[e] === "inherit") && t !== void 0 && (k[e] = t);
|
|
8835
8878
|
let M = await oi(t, Ri(k, w));
|
|
8836
|
-
M = await Fi(t, M);
|
|
8837
|
-
let ie =
|
|
8879
|
+
M = await Fi(t, M), M = await zi(t, M);
|
|
8880
|
+
let ie = Bi(M);
|
|
8838
8881
|
delete M.socialImage, delete M.fbImage, delete M.xImage, delete M.whatsappImage, ie && (M.socialImages = ie), x.slug = h.slug, x.title = h.title, Object.assign(x, M), x.layoutId = re;
|
|
8839
8882
|
let ae = !!h.isHidden || O, oe = !Pi(E, D);
|
|
8840
8883
|
if (!o && (ae || oe)) return e.json({ error: "Node is hidden or outside its scheduled publishing window" }, 404);
|
|
@@ -8872,7 +8915,7 @@ Ni.get("/*", async (e) => {
|
|
|
8872
8915
|
let i = r.hidden === !0 || r.hidden === 1 || r.hidden === "1" || r.hidden === "true", a = Pi(r.startShowingAt, r.stopShowingAt);
|
|
8873
8916
|
if (!o && (i || !a)) continue;
|
|
8874
8917
|
let s = e.elementType || e.componentId || "text-block", c = p.blocks?.[s]?.fields || p.elements?.[s]?.fields || p.components?.[s]?.fields || {}, l = String(r.blockId || r._instanceId || r.id || e.blockId || e.id), u = Ri(r, c);
|
|
8875
|
-
u = await oi(t, u), u.blockId = l, P[n].push({
|
|
8918
|
+
u = await oi(t, u), u = await zi(t, u), u.blockId = l, P[n].push({
|
|
8876
8919
|
instanceId: e.id,
|
|
8877
8920
|
blockId: l,
|
|
8878
8921
|
componentId: s,
|
|
@@ -8924,8 +8967,8 @@ Ni.get("/*", async (e) => {
|
|
|
8924
8967
|
});
|
|
8925
8968
|
//#endregion
|
|
8926
8969
|
//#region server/routes/public/tree.ts
|
|
8927
|
-
var
|
|
8928
|
-
function
|
|
8970
|
+
var Ui = new e();
|
|
8971
|
+
function Wi(e, t) {
|
|
8929
8972
|
let n = /* @__PURE__ */ new Date();
|
|
8930
8973
|
if (e && String(e).trim() !== "") {
|
|
8931
8974
|
let t = new Date(e);
|
|
@@ -8937,7 +8980,7 @@ function Ui(e, t) {
|
|
|
8937
8980
|
}
|
|
8938
8981
|
return !0;
|
|
8939
8982
|
}
|
|
8940
|
-
|
|
8983
|
+
Ui.get("/:treeParam", async (e) => {
|
|
8941
8984
|
try {
|
|
8942
8985
|
let t = e.get("db"), n = e.req.param("treeParam"), r = e.req.query("channelId") || e.req.query("channel") || "default", i = e.req.query("preview") === "true";
|
|
8943
8986
|
if (r && r !== "default" && r !== "all") {
|
|
@@ -8976,7 +9019,7 @@ Hi.get("/:treeParam", async (e) => {
|
|
|
8976
9019
|
if (r) try {
|
|
8977
9020
|
n = typeof r == "string" ? JSON.parse(r) : r, delete n._isTreeDraft, delete n._draftParentId, delete n.isNew, delete n.hidden, delete n.is_hidden, delete n.isHidden, delete n.status;
|
|
8978
9021
|
} catch {}
|
|
8979
|
-
let a = !i && (e.status === "draft" || e.status === "new"), o = !!e.isHidden || a || n.hidden === !0 || n.hidden === 1 || n.hidden === "1" || n.hidden === "true", s =
|
|
9022
|
+
let a = !i && (e.status === "draft" || e.status === "new"), o = !!e.isHidden || a || n.hidden === !0 || n.hidden === 1 || n.hidden === "1" || n.hidden === "true", s = Wi(n.startShowingAt, n.stopShowingAt), c = (e.slug || "").replace(/^\/+|\/+$/g, ""), l = c === "home" || c === "homee" ? "/" : `${t}/${c}`.replace(/\/+/g, "/"), u = {
|
|
8980
9023
|
id: e.id,
|
|
8981
9024
|
treeNodeId: e.treeNodeId,
|
|
8982
9025
|
parentId: e.parentId || null,
|
|
@@ -9011,8 +9054,8 @@ Hi.get("/:treeParam", async (e) => {
|
|
|
9011
9054
|
});
|
|
9012
9055
|
//#endregion
|
|
9013
9056
|
//#region server/routes/public/assets.ts
|
|
9014
|
-
var
|
|
9015
|
-
function
|
|
9057
|
+
var Gi = new e();
|
|
9058
|
+
function Ki(e, t) {
|
|
9016
9059
|
if (t === "webp") return "image/webp";
|
|
9017
9060
|
if (t === "avif") return "image/avif";
|
|
9018
9061
|
if (t === "jpeg" || t === "jpg") return "image/jpeg";
|
|
@@ -9020,7 +9063,7 @@ function Gi(e, t) {
|
|
|
9020
9063
|
let n = e.toLowerCase();
|
|
9021
9064
|
return n.endsWith(".jpg") || n.endsWith(".jpeg") ? "image/jpeg" : n.endsWith(".png") ? "image/png" : n.endsWith(".webp") ? "image/webp" : n.endsWith(".gif") ? "image/gif" : n.endsWith(".svg") ? "image/svg+xml" : n.endsWith(".pdf") ? "application/pdf" : n.endsWith(".mp4") ? "video/mp4" : n.endsWith(".webm") ? "video/webm" : "application/octet-stream";
|
|
9022
9065
|
}
|
|
9023
|
-
|
|
9066
|
+
Gi.get("/*", async (e) => {
|
|
9024
9067
|
let t = e.req.path.replace(/^\/media\//, "").replace(/^\//, "");
|
|
9025
9068
|
if (!t) return e.text("Asset key missing", 400);
|
|
9026
9069
|
let n = e.env?.MEDIA_BUCKET, { w: r, h: i, q: a, f: o } = e.req.query(), s = !!(r || i || a || o), c = e.req.header("Via")?.includes("image-resizing") || e.req.header("User-Agent")?.includes("Cloudflare-ImgRen");
|
|
@@ -9066,7 +9109,7 @@ Wi.get("/*", async (e) => {
|
|
|
9066
9109
|
if (!s) {
|
|
9067
9110
|
let n = u(g);
|
|
9068
9111
|
return e.body(n, 200, {
|
|
9069
|
-
"Content-Type":
|
|
9112
|
+
"Content-Type": Ki(t),
|
|
9070
9113
|
"Cache-Control": "public, max-age=86400"
|
|
9071
9114
|
});
|
|
9072
9115
|
}
|
|
@@ -9074,7 +9117,7 @@ Wi.get("/*", async (e) => {
|
|
|
9074
9117
|
if (l(b)) {
|
|
9075
9118
|
let n = u(b);
|
|
9076
9119
|
return e.body(n, 200, {
|
|
9077
|
-
"Content-Type":
|
|
9120
|
+
"Content-Type": Ki(t, v),
|
|
9078
9121
|
"Cache-Control": "public, max-age=31536000, immutable",
|
|
9079
9122
|
"X-Local-Cache": "HIT"
|
|
9080
9123
|
});
|
|
@@ -9087,14 +9130,14 @@ Wi.get("/*", async (e) => {
|
|
|
9087
9130
|
typeof n == "number" && (a.width = n), typeof c == "number" && (a.height = c), (a.width || a.height) && (a.fit = "cover", i = i.resize(a)), v === "webp" ? i = i.webp({ quality: typeof _ == "number" ? _ : 80 }) : v === "avif" ? i = i.avif({ quality: typeof _ == "number" ? _ : 70 }) : v === "jpeg" || v === "jpg" ? i = i.jpeg({ quality: typeof _ == "number" ? _ : 80 }) : v === "png" && (i = i.png({ quality: typeof _ == "number" ? _ : 80 }));
|
|
9088
9131
|
let o = await i.toBuffer();
|
|
9089
9132
|
return d(m(b), { recursive: !0 }), f(b, o), e.body(o, 200, {
|
|
9090
|
-
"Content-Type":
|
|
9133
|
+
"Content-Type": Ki(t, v),
|
|
9091
9134
|
"Cache-Control": "public, max-age=31536000, immutable",
|
|
9092
9135
|
"X-Local-Cache": "MISS"
|
|
9093
9136
|
});
|
|
9094
9137
|
} catch {
|
|
9095
9138
|
let n = u(g);
|
|
9096
9139
|
return e.body(n, 200, {
|
|
9097
|
-
"Content-Type":
|
|
9140
|
+
"Content-Type": Ki(t),
|
|
9098
9141
|
"Cache-Control": "public, max-age=86400"
|
|
9099
9142
|
});
|
|
9100
9143
|
}
|
|
@@ -9105,8 +9148,8 @@ Wi.get("/*", async (e) => {
|
|
|
9105
9148
|
});
|
|
9106
9149
|
//#endregion
|
|
9107
9150
|
//#region server/routes/public/paths.ts
|
|
9108
|
-
var
|
|
9109
|
-
function
|
|
9151
|
+
var qi = new e();
|
|
9152
|
+
function Ji(e, t) {
|
|
9110
9153
|
let n = /* @__PURE__ */ new Date();
|
|
9111
9154
|
if (e && String(e).trim() !== "") {
|
|
9112
9155
|
let t = new Date(e);
|
|
@@ -9118,7 +9161,7 @@ function qi(e, t) {
|
|
|
9118
9161
|
}
|
|
9119
9162
|
return !0;
|
|
9120
9163
|
}
|
|
9121
|
-
|
|
9164
|
+
qi.get("/", async (e) => {
|
|
9122
9165
|
try {
|
|
9123
9166
|
let t = await e.get("db").prepare("\n SELECT \n t.id as treeNodeId,\n t.parentId,\n c.slug,\n c.contentType as nodeType,\n c.status,\n c.dataJson\n FROM tree_nodes t\n INNER JOIN content_nodes c ON t.contentId = c.id\n WHERE (c.deletedAt IS NULL OR c.deletedAt = '')\n ").all(), n = Array.isArray(t) ? t : t?.results || [], r = [];
|
|
9124
9167
|
function i(e = null, t = "") {
|
|
@@ -9131,7 +9174,7 @@ Ki.get("/", async (e) => {
|
|
|
9131
9174
|
if (e.dataJson) try {
|
|
9132
9175
|
n = typeof e.dataJson == "string" ? JSON.parse(e.dataJson) : e.dataJson;
|
|
9133
9176
|
} catch {}
|
|
9134
|
-
let a = e.status === "published" || e.status === "active", o =
|
|
9177
|
+
let a = e.status === "published" || e.status === "active", o = Ji(n.startShowingAt, n.stopShowingAt);
|
|
9135
9178
|
if (!a || !o) continue;
|
|
9136
9179
|
let s = (e.slug || "").replace(/^\/+|\/+$/g, ""), c = s === "home" || s === "homee" ? "/" : `${t}/${s}`.replace(/\/+/g, "/");
|
|
9137
9180
|
e.nodeType !== "external-link" && r.push(c);
|
|
@@ -9148,7 +9191,7 @@ Ki.get("/", async (e) => {
|
|
|
9148
9191
|
});
|
|
9149
9192
|
//#endregion
|
|
9150
9193
|
//#region server/index.ts
|
|
9151
|
-
var $ = new e(),
|
|
9194
|
+
var $ = new e(), Yi = !1;
|
|
9152
9195
|
$.use("*", o()), $.use("/media/*", o({
|
|
9153
9196
|
origin: "*",
|
|
9154
9197
|
allowMethods: [
|
|
@@ -9169,13 +9212,13 @@ $.use("*", o()), $.use("/media/*", o({
|
|
|
9169
9212
|
let n = new URL(e.req.url), r = (e.req.header("host") || n.hostname).split(":")[0];
|
|
9170
9213
|
e.set("currentDomain", r);
|
|
9171
9214
|
let i = u(e);
|
|
9172
|
-
if (e.set("db", i), !
|
|
9173
|
-
await Nr(i),
|
|
9215
|
+
if (e.set("db", i), !Yi) try {
|
|
9216
|
+
await Nr(i), Yi = !0;
|
|
9174
9217
|
} catch (e) {
|
|
9175
9218
|
console.error("❌ [CMS Server] Failed to initialize system tables on cold start:", e);
|
|
9176
9219
|
}
|
|
9177
9220
|
await t();
|
|
9178
|
-
}), $.route("/media",
|
|
9221
|
+
}), $.route("/media", Gi), $.use("/media/*", Ir()), $.route("/api/cms/nodes", X), $.route("/api/cms/nodes.json", X), $.route("/api/cms/formcsv", X), $.route("/api/cms/formcsv.json", X), $.route("/api/cms/stats", Ai), $.route("/api/cms/stats.json", Ai), $.route("/api/cms", yi), $.route("/api/cms/channels", Ci), $.route("/api/cms/channels.json", Ci), $.route("/api/cms/schemas", wi), $.route("/api/cms/schemas.json", wi), $.route("/api/cms", Di), $.route("/api/admin/assets", Z), $.route("/api/v1/node", Ni), $.route("/api/v1/page", Ni), $.route("/api/v1/tree", Ui), $.route("/api/v1/all-paths", qi), $.get("*", async (e) => {
|
|
9179
9222
|
if (e.env?.ASSETS) {
|
|
9180
9223
|
let t = await e.env.ASSETS.fetch(e.req.raw);
|
|
9181
9224
|
if (t.status === 404) {
|