@brightsideoy/kama 1.0.0-alpha.7 → 1.0.0-alpha.8
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/dist/assets/{index-BL8s3kNS.js → index-BoKRJcv3.js} +35 -35
- package/dist/assets/{index-CHQAZAAH.css → index-Cw7t4FzH.css} +1 -1
- package/dist/{dist-BmDMKgKk.js → dist-KAwiRitk.js} +122 -53
- package/dist/index.html +2 -2
- package/dist/index.js +122 -53
- package/dist/schema-compiler.js +1 -1
- package/package.json +4 -2
- package/templates/astro-starter/src/pages/[...slug].astro +47 -0
|
@@ -23183,7 +23183,7 @@ async function px(e) {
|
|
|
23183
23183
|
} catch (t) {
|
|
23184
23184
|
console.error(`[Route Generator] Failed to parse channel ${e.id} dataJson:`, t);
|
|
23185
23185
|
}
|
|
23186
|
-
let i = await e.prepare("SELECT id, slug FROM content_nodes WHERE (deletedAt IS NULL OR deletedAt = '')").all(), a = Array.isArray(i) ? i : i?.results || [], o = /* @__PURE__ */ new Map();
|
|
23186
|
+
let i = await e.prepare("SELECT id, slug FROM content_nodes WHERE status = 'published' AND (deletedAt IS NULL OR deletedAt = '')").all(), a = Array.isArray(i) ? i : i?.results || [], o = /* @__PURE__ */ new Map();
|
|
23187
23187
|
for (let e of a) e.slug && o.set(Number(e.id), String(e.slug).replace(/^\/+|\/+$/g, ""));
|
|
23188
23188
|
let s = await e.prepare("SELECT channelId, treeId FROM channel_trees").all(), c = Array.isArray(s) ? s : s?.results || [], l = await e.prepare("SELECT treeId, contentId, parentId, sortOrder FROM tree_nodes ORDER BY sortOrder ASC").all(), u = Array.isArray(l) ? l : l?.results || [], d = await e.prepare("SELECT nodeId, channelId FROM node_channels").all(), f = Array.isArray(d) ? d : d?.results || [], p = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Set();
|
|
23189
23189
|
for (let e of n) {
|
|
@@ -23621,34 +23621,41 @@ mx.get("/", async (e) => {
|
|
|
23621
23621
|
}
|
|
23622
23622
|
}
|
|
23623
23623
|
if (a) {
|
|
23624
|
-
let e = await t.prepare("SELECT title, slug, language, contentType, isHidden, draftDataJson, dataJson, publishedAt, status, hasUnpublishedChanges FROM content_nodes WHERE id = ?").get(a);
|
|
23624
|
+
let e = await t.prepare("SELECT title, slug, language, contentType, isHidden, draftDataJson, dataJson, publishedAt, status, hasUnpublishedChanges FROM content_nodes WHERE id = ?").get(a), n = o === void 0 ? e?.title || "Untitled" : o, r = A ?? e?.slug ?? null, i = S || e?.contentType || "page", l = c === void 0 ? e?.language ?? null : w, u = x === void 0 ? vx(e?.isHidden) : x;
|
|
23625
23625
|
ne = Sx(e, {
|
|
23626
|
-
title:
|
|
23627
|
-
slug:
|
|
23628
|
-
isHidden:
|
|
23626
|
+
title: n,
|
|
23627
|
+
slug: r,
|
|
23628
|
+
isHidden: u,
|
|
23629
23629
|
sanitizedFields: v
|
|
23630
23630
|
});
|
|
23631
|
-
let
|
|
23631
|
+
let d = e?.draftDataJson || e?.dataJson || "{}";
|
|
23632
23632
|
try {
|
|
23633
|
-
xx(typeof
|
|
23633
|
+
xx(typeof d == "string" ? JSON.parse(d) : d, te);
|
|
23634
23634
|
} catch {}
|
|
23635
|
-
let
|
|
23635
|
+
let f = {};
|
|
23636
23636
|
try {
|
|
23637
|
-
|
|
23637
|
+
f = JSON.parse(d);
|
|
23638
23638
|
} catch {}
|
|
23639
|
-
let
|
|
23640
|
-
|
|
23639
|
+
let p = {
|
|
23640
|
+
title: n,
|
|
23641
|
+
slug: r,
|
|
23642
|
+
contentType: i,
|
|
23643
|
+
language: l,
|
|
23644
|
+
isHidden: u,
|
|
23641
23645
|
...v
|
|
23642
|
-
}
|
|
23643
|
-
|
|
23644
|
-
|
|
23645
|
-
|
|
23646
|
+
}, h = JSON.stringify({
|
|
23647
|
+
...f,
|
|
23648
|
+
...p
|
|
23649
|
+
}), g = !1;
|
|
23650
|
+
if (o !== void 0 && o.trim() !== (e?.title || "Untitled") && (g = !0), s !== void 0 && A !== e?.slug && (g = !0), c !== void 0 && w !== e?.language && (g = !0), !g && Object.keys(v).length > 0) {
|
|
23651
|
+
for (let e of Object.keys(v)) if (JSON.stringify(v[e]) !== JSON.stringify(f[e])) {
|
|
23652
|
+
g = !0;
|
|
23646
23653
|
break;
|
|
23647
23654
|
}
|
|
23648
23655
|
}
|
|
23649
|
-
if (!
|
|
23656
|
+
if (!g && m !== void 0) {
|
|
23650
23657
|
let e = await t.prepare("SELECT region, elementType, dataJson FROM content_blocks WHERE contentId = ? AND isDraft = 1 ORDER BY sortOrder ASC").all(a), n = Array.isArray(e) ? e : e?.results || [];
|
|
23651
|
-
if (m.length !== n.length)
|
|
23658
|
+
if (m.length !== n.length) g = !0;
|
|
23652
23659
|
else for (let e = 0; e < m.length; e++) {
|
|
23653
23660
|
let t = m[e], r = n[e], i = t.componentId || t.elementType || "text-block", a = t.region || "content", o = { ...t.data || {} };
|
|
23654
23661
|
delete o._instanceId, delete o.blockId;
|
|
@@ -23657,19 +23664,27 @@ mx.get("/", async (e) => {
|
|
|
23657
23664
|
s = JSON.parse(r.dataJson);
|
|
23658
23665
|
} catch {}
|
|
23659
23666
|
if (delete s._instanceId, delete s.blockId, i !== r.elementType || a !== r.region || JSON.stringify(o) !== JSON.stringify(s)) {
|
|
23660
|
-
|
|
23667
|
+
g = !0;
|
|
23661
23668
|
break;
|
|
23662
23669
|
}
|
|
23663
23670
|
}
|
|
23664
23671
|
}
|
|
23665
|
-
let u = o === void 0 ? e?.title || "Untitled" : o, d = A ?? e?.slug ?? null, f = S || e?.contentType || "page", p = c === void 0 ? e?.language : w;
|
|
23666
23672
|
O = e?.status === "published" || e?.publishedAt ? "published" : "draft";
|
|
23667
|
-
let
|
|
23668
|
-
k =
|
|
23673
|
+
let _ = e?.hasUnpublishedChanges === 1 || e?.hasUnpublishedChanges === !0;
|
|
23674
|
+
k = g ? 1 : +!!_;
|
|
23675
|
+
let y = e?.publishedAt != null || e?.status === "published", b = y ? e.title : n, T = y ? e.slug : r, ee = y ? e.contentType : i, E = y ? e.language : l, D = y ? e.isHidden : u;
|
|
23676
|
+
await t.prepare("\n UPDATE content_nodes \n SET title = ?, slug = ?, language = ?, contentType = ?, isHidden = ?, status = ?, draftDataJson = ?, hasUnpublishedChanges = ?, updatedById = ?, updatedAt = CURRENT_TIMESTAMP\n WHERE id = ?\n ").run(b, T, E, ee, D, O, h, k, C, a);
|
|
23669
23677
|
} else {
|
|
23670
23678
|
ne = !0;
|
|
23671
|
-
let e =
|
|
23672
|
-
|
|
23679
|
+
let e = {
|
|
23680
|
+
title: o || "Untitled",
|
|
23681
|
+
slug: A,
|
|
23682
|
+
contentType: S,
|
|
23683
|
+
language: w,
|
|
23684
|
+
isHidden: x,
|
|
23685
|
+
...v
|
|
23686
|
+
}, n = await t.prepare("\n INSERT INTO content_nodes (contentType, title, slug, language, isHidden, status, draftDataJson, dataJson, hasUnpublishedChanges, createdById, updatedById)\n VALUES (?, ?, ?, ?, ?, 'draft', ?, NULL, 0, ?, ?)\n ").run(S, o || "Untitled", A, w, x, JSON.stringify(e), C, C);
|
|
23687
|
+
D = Number(n.lastInsertRowid);
|
|
23673
23688
|
}
|
|
23674
23689
|
if (h !== void 0 && Array.isArray(h) && D) {
|
|
23675
23690
|
await t.prepare("DELETE FROM node_channels WHERE nodeId = ?").run(D);
|
|
@@ -23715,7 +23730,7 @@ mx.get("/", async (e) => {
|
|
|
23715
23730
|
await Cx(t, n, a);
|
|
23716
23731
|
}
|
|
23717
23732
|
}
|
|
23718
|
-
return await $b(e).clear(),
|
|
23733
|
+
return await $b(e).clear(), e.json({
|
|
23719
23734
|
success: !0,
|
|
23720
23735
|
id: D,
|
|
23721
23736
|
status: O,
|
|
@@ -23735,46 +23750,97 @@ mx.get("/", async (e) => {
|
|
|
23735
23750
|
try {
|
|
23736
23751
|
c = typeof o.draftDataJson == "string" ? JSON.parse(o.draftDataJson) : o.draftDataJson || {};
|
|
23737
23752
|
} catch {}
|
|
23738
|
-
let l = (s.title ?? o.title ?? "").trim(), u = (c.title ?? n.title ?? o.title ?? "").trim(), d = (s.slug ?? o.slug ?? "").trim(), f = (c.slug ?? n.slug ?? o.slug ?? "").trim(), p = (s.menuTitle ?? "").trim(), m = (c.menuTitle ?? "").trim(), h = l !== "" && u !== "" && l !== u || d !== "" && f !== "" && d !== f || p !== "" && m !== "" && p !== m, g = o.draftDataJson || o.dataJson || "{}";
|
|
23739
|
-
await t.prepare("\n UPDATE content_nodes\n SET publishedDataJson = ?, dataJson = ?, publishedAt = CURRENT_TIMESTAMP, status = 'published', hasUnpublishedChanges = 0, updatedById = ?, updatedAt = CURRENT_TIMESTAMP\n WHERE id = ?\n ").run(g, g, a, i), await t.prepare("DELETE FROM content_blocks WHERE contentId = ? AND isDraft = 0").run(i);
|
|
23740
|
-
let
|
|
23741
|
-
if (
|
|
23753
|
+
let l = (s.title ?? o.title ?? "").trim(), u = (c.title ?? n.title ?? o.title ?? "").trim(), d = (s.slug ?? o.slug ?? "").trim(), f = (c.slug ?? n.slug ?? o.slug ?? "").trim(), p = (s.menuTitle ?? "").trim(), m = (c.menuTitle ?? "").trim(), h = l !== "" && u !== "" && l !== u || d !== "" && f !== "" && d !== f || p !== "" && m !== "" && p !== m, g = o.draftDataJson || o.dataJson || "{}", _ = c.title ?? n.title ?? o.title ?? "Untitled", v = c.slug ?? n.slug ?? o.slug ?? null, y = c.language === void 0 ? o.language : c.language, b = c.contentType ?? o.contentType ?? "page", x = c.isHidden === void 0 ? o.isHidden : c.isHidden;
|
|
23754
|
+
await t.prepare("\n UPDATE content_nodes\n SET title = ?, slug = ?, language = ?, contentType = ?, isHidden = ?, publishedDataJson = ?, dataJson = ?, publishedAt = CURRENT_TIMESTAMP, status = 'published', hasUnpublishedChanges = 0, updatedById = ?, updatedAt = CURRENT_TIMESTAMP\n WHERE id = ?\n ").run(_, v, y, b, x, g, g, a, i), await t.prepare("DELETE FROM content_blocks WHERE contentId = ? AND isDraft = 0").run(i);
|
|
23755
|
+
let S = await t.prepare("SELECT * FROM content_blocks WHERE contentId = ? AND isDraft = 1 ORDER BY sortOrder ASC").all(i), C = Array.isArray(S) ? S : S?.results || [];
|
|
23756
|
+
if (C.length > 0) {
|
|
23742
23757
|
let e = [], n = [];
|
|
23743
|
-
for (let t of
|
|
23758
|
+
for (let t of C) {
|
|
23744
23759
|
let r = t.region !== void 0 && t.region !== null && String(t.region).trim() !== "" ? String(t.region) : "content";
|
|
23745
23760
|
e.push("(?, ?, ?, ?, ?, 0)"), n.push(i, t.sortOrder, t.elementType, t.dataJson, r);
|
|
23746
23761
|
}
|
|
23747
23762
|
await t.prepare(`INSERT INTO content_blocks (contentId, sortOrder, elementType, dataJson, region, isDraft) VALUES ${e.join(", ")}`).run(...n);
|
|
23748
23763
|
}
|
|
23749
|
-
let
|
|
23750
|
-
version:
|
|
23764
|
+
let w = ((await t.prepare("SELECT COUNT(*) as count FROM node_revisions WHERE nodeId = ?").get(i))?.count || 0) + 1, T = {
|
|
23765
|
+
version: w,
|
|
23751
23766
|
publishedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
23752
23767
|
node: {
|
|
23753
23768
|
...o,
|
|
23754
23769
|
dataJson: g
|
|
23755
23770
|
},
|
|
23756
|
-
blocks:
|
|
23771
|
+
blocks: C
|
|
23757
23772
|
};
|
|
23758
|
-
return await t.prepare("INSERT INTO node_revisions (nodeId, version, snapshotJson, createdById) VALUES (?, ?, ?, ?)").run(i,
|
|
23773
|
+
return await t.prepare("INSERT INTO node_revisions (nodeId, version, snapshotJson, createdById) VALUES (?, ?, ?, ?)").run(i, w, JSON.stringify(T), a), await $b(e).clear(), h && await px(t), new fx(e.env).purgeNode(e, t, i, h), e.json({
|
|
23759
23774
|
success: !0,
|
|
23760
23775
|
id: i,
|
|
23761
23776
|
status: "published",
|
|
23762
|
-
version:
|
|
23763
|
-
publishedAt:
|
|
23777
|
+
version: w,
|
|
23778
|
+
publishedAt: T.publishedAt,
|
|
23764
23779
|
hasUnpublishedChanges: !1,
|
|
23765
23780
|
isStructuralChange: h
|
|
23766
23781
|
});
|
|
23782
|
+
}), mx.post("/publish/batch", async (e) => {
|
|
23783
|
+
let t = e.get("db"), n = await e.req.json(), r = n.ids;
|
|
23784
|
+
if (!Array.isArray(r) || r.length === 0) return e.json({ error: "Array of Node IDs required" }, 400);
|
|
23785
|
+
let i = e.get("user")?.id || null, a = !1, o = [];
|
|
23786
|
+
for (let e of r) {
|
|
23787
|
+
let r = Number(e);
|
|
23788
|
+
if (isNaN(r)) continue;
|
|
23789
|
+
let s = await t.prepare("SELECT * FROM content_nodes WHERE id = ?").get(r);
|
|
23790
|
+
if (!s) continue;
|
|
23791
|
+
let c = {};
|
|
23792
|
+
try {
|
|
23793
|
+
c = typeof s.publishedDataJson == "string" ? JSON.parse(s.publishedDataJson) : s.publishedDataJson || {};
|
|
23794
|
+
} catch {}
|
|
23795
|
+
let l = {};
|
|
23796
|
+
try {
|
|
23797
|
+
l = typeof s.draftDataJson == "string" ? JSON.parse(s.draftDataJson) : s.draftDataJson || {};
|
|
23798
|
+
} catch {}
|
|
23799
|
+
let u = (c.title ?? s.title ?? "").trim(), d = (l.title ?? n.title ?? s.title ?? "").trim(), f = (c.slug ?? s.slug ?? "").trim(), p = (l.slug ?? n.slug ?? s.slug ?? "").trim(), m = (c.menuTitle ?? "").trim(), h = (l.menuTitle ?? "").trim();
|
|
23800
|
+
(u !== "" && d !== "" && u !== d || f !== "" && p !== "" && f !== p || m !== "" && h !== "" && m !== h) && (a = !0);
|
|
23801
|
+
let g = s.draftDataJson || s.dataJson || "{}", _ = l.title ?? n.title ?? s.title ?? "Untitled", v = l.slug ?? n.slug ?? s.slug ?? null, y = l.language === void 0 ? s.language : l.language, b = l.contentType ?? s.contentType ?? "page", x = l.isHidden === void 0 ? s.isHidden : l.isHidden;
|
|
23802
|
+
await t.prepare("\n UPDATE content_nodes\n SET title = ?, slug = ?, language = ?, contentType = ?, isHidden = ?, publishedDataJson = ?, dataJson = ?, publishedAt = CURRENT_TIMESTAMP, status = 'published', hasUnpublishedChanges = 0, updatedById = ?, updatedAt = CURRENT_TIMESTAMP\n WHERE id = ?\n ").run(_, v, y, b, x, g, g, i, r), await t.prepare("DELETE FROM content_blocks WHERE contentId = ? AND isDraft = 0").run(r);
|
|
23803
|
+
let S = await t.prepare("SELECT * FROM content_blocks WHERE contentId = ? AND isDraft = 1 ORDER BY sortOrder ASC").all(r), C = Array.isArray(S) ? S : S?.results || [];
|
|
23804
|
+
if (C.length > 0) {
|
|
23805
|
+
let e = [], n = [];
|
|
23806
|
+
for (let t of C) {
|
|
23807
|
+
let i = t.region !== void 0 && t.region !== null && String(t.region).trim() !== "" ? String(t.region) : "content";
|
|
23808
|
+
e.push("(?, ?, ?, ?, ?, 0)"), n.push(r, t.sortOrder, t.elementType, t.dataJson, i);
|
|
23809
|
+
}
|
|
23810
|
+
await t.prepare(`INSERT INTO content_blocks (contentId, sortOrder, elementType, dataJson, region, isDraft) VALUES ${e.join(", ")}`).run(...n);
|
|
23811
|
+
}
|
|
23812
|
+
let w = ((await t.prepare("SELECT COUNT(*) as count FROM node_revisions WHERE nodeId = ?").get(r))?.count || 0) + 1, T = {
|
|
23813
|
+
version: w,
|
|
23814
|
+
publishedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
23815
|
+
node: {
|
|
23816
|
+
...s,
|
|
23817
|
+
dataJson: g
|
|
23818
|
+
},
|
|
23819
|
+
blocks: C
|
|
23820
|
+
};
|
|
23821
|
+
await t.prepare("INSERT INTO node_revisions (nodeId, version, snapshotJson, createdById) VALUES (?, ?, ?, ?)").run(r, w, JSON.stringify(T), i), o.push(r);
|
|
23822
|
+
}
|
|
23823
|
+
await $b(e).clear();
|
|
23824
|
+
let s = new fx(e.env);
|
|
23825
|
+
if (a) await px(t), s.purgeGlobalCache(e, t);
|
|
23826
|
+
else for (let n of o) s.purgeNode(e, t, n, !1);
|
|
23827
|
+
return e.json({
|
|
23828
|
+
success: !0,
|
|
23829
|
+
publishedCount: o.length,
|
|
23830
|
+
publishedIds: o,
|
|
23831
|
+
isStructuralChange: a
|
|
23832
|
+
});
|
|
23767
23833
|
}), mx.delete("/", async (e) => {
|
|
23768
23834
|
let t = e.get("db"), n = e.req.query("id");
|
|
23769
23835
|
if (!n) return e.json({ error: "Node ID required" }, 400);
|
|
23770
23836
|
let r = Number(n);
|
|
23771
|
-
return await t.prepare("UPDATE content_nodes SET deletedAt = CURRENT_TIMESTAMP WHERE id = ?").run(r), await $b(e).clear(), new fx(e.env).purgeNode(e, t, r, !0),
|
|
23837
|
+
return await t.prepare("UPDATE content_nodes SET deletedAt = CURRENT_TIMESTAMP WHERE id = ?").run(r), await $b(e).clear(), await px(t), new fx(e.env).purgeNode(e, t, r, !0), e.json({
|
|
23772
23838
|
success: !0,
|
|
23773
23839
|
deletedNodeId: r
|
|
23774
23840
|
});
|
|
23775
23841
|
}), mx.post("/restore", async (e) => {
|
|
23776
23842
|
let t = e.get("db"), n = await e.req.json(), r = Number(n.id);
|
|
23777
|
-
return r ? await t.prepare("SELECT id FROM content_nodes WHERE id = ?").get(r) ? (await t.prepare("UPDATE content_nodes SET deletedAt = NULL WHERE id = ?").run(r), await $b(e).clear(), new fx(e.env).purgeNode(e, t, r, !0),
|
|
23843
|
+
return r ? await t.prepare("SELECT id FROM content_nodes WHERE id = ?").get(r) ? (await t.prepare("UPDATE content_nodes SET deletedAt = NULL WHERE id = ?").run(r), await $b(e).clear(), await px(t), new fx(e.env).purgeNode(e, t, r, !0), e.json({
|
|
23778
23844
|
success: !0,
|
|
23779
23845
|
restoredNodeId: r
|
|
23780
23846
|
})) : e.json({ error: "Node not found" }, 404) : e.json({ error: "Node ID required" }, 400);
|
|
@@ -23782,7 +23848,7 @@ mx.get("/", async (e) => {
|
|
|
23782
23848
|
let t = e.get("db"), n = e.req.query("id");
|
|
23783
23849
|
if (!n) return e.json({ error: "Node ID required" }, 400);
|
|
23784
23850
|
let r = Number(n);
|
|
23785
|
-
return
|
|
23851
|
+
return await t.prepare("DELETE FROM node_channels WHERE nodeId = ?").run(r), await t.prepare("DELETE FROM tree_nodes WHERE contentId = ?").run(r), await t.prepare("DELETE FROM content_blocks WHERE contentId = ?").run(r), await t.prepare("DELETE FROM node_revisions WHERE nodeId = ?").run(r), await t.prepare("DELETE FROM node_assets WHERE nodeId = ?").run(r), await t.prepare("DELETE FROM node_terms WHERE nodeId = ?").run(r), await t.prepare("DELETE FROM content_nodes WHERE id = ?").run(r), await $b(e).clear(), await px(t), new fx(e.env).purgeNode(e, t, r, !0), e.json({
|
|
23786
23852
|
success: !0,
|
|
23787
23853
|
purgedNodeId: r
|
|
23788
23854
|
});
|
|
@@ -23813,20 +23879,23 @@ mx.get("/", async (e) => {
|
|
|
23813
23879
|
}
|
|
23814
23880
|
return e.json({ snapshot: a });
|
|
23815
23881
|
}), mx.post("/:id/revisions/:version/restore", async (e) => {
|
|
23816
|
-
let t = e.get("db"), n = Number(e.req.param("id")), r = Number(e.req.param("version")), i = e.get("user")?.id || null, a = await t.prepare("SELECT
|
|
23817
|
-
if (!a) return e.json({ error: "
|
|
23818
|
-
let o =
|
|
23882
|
+
let t = e.get("db"), n = Number(e.req.param("id")), r = Number(e.req.param("version")), i = e.get("user")?.id || null, a = await t.prepare("SELECT * FROM content_nodes WHERE id = ?").get(n);
|
|
23883
|
+
if (!a) return e.json({ error: "Node not found" }, 404);
|
|
23884
|
+
let o = await t.prepare("SELECT snapshotJson FROM node_revisions WHERE nodeId = ? AND version = ?").get(n, r);
|
|
23885
|
+
if (!o) return e.json({ error: "Snapshot not found" }, 404);
|
|
23886
|
+
let s = {};
|
|
23819
23887
|
try {
|
|
23820
|
-
|
|
23888
|
+
s = JSON.parse(o.snapshotJson);
|
|
23821
23889
|
} catch {
|
|
23822
23890
|
return e.json({ error: "Corrupt snapshot data" }, 500);
|
|
23823
23891
|
}
|
|
23824
|
-
|
|
23892
|
+
let c = a.status === "published" || a.publishedAt != null, l = c ? a.title : s.node?.title || "Restored Document", u = c ? a.slug : s.node?.slug || null;
|
|
23893
|
+
if (await t.prepare("\n UPDATE content_nodes\n SET draftDataJson = ?, title = ?, slug = ?, updatedById = ?, updatedAt = CURRENT_TIMESTAMP, status = 'draft', hasUnpublishedChanges = 1\n WHERE id = ?\n ").run(s.node?.dataJson || "{}", l, u, i, n), await t.prepare("DELETE FROM content_blocks WHERE contentId = ? AND isDraft = 1").run(n), s.blocks && Array.isArray(s.blocks) && s.blocks.length > 0) {
|
|
23825
23894
|
let e = [], r = [];
|
|
23826
|
-
for (let t of
|
|
23895
|
+
for (let t of s.blocks) e.push("(?, ?, ?, ?, ?, 1)"), r.push(n, t.sortOrder, t.elementType, t.dataJson, t.region || "content");
|
|
23827
23896
|
await t.prepare(`INSERT INTO content_blocks (contentId, sortOrder, elementType, dataJson, region, isDraft) VALUES ${e.join(", ")}`).run(...r);
|
|
23828
23897
|
}
|
|
23829
|
-
return await $b(e).clear(),
|
|
23898
|
+
return await $b(e).clear(), e.json({
|
|
23830
23899
|
success: !0,
|
|
23831
23900
|
restoredVersion: r
|
|
23832
23901
|
});
|
|
@@ -23936,7 +24005,7 @@ Tx.get("/tree.json", async (e) => {
|
|
|
23936
24005
|
c.push(e.id, e.sortOrder);
|
|
23937
24006
|
}), c.push(...i), c.push(o), await t.prepare(s).run(...c);
|
|
23938
24007
|
}
|
|
23939
|
-
return await i.clear(), r.length > 0 && a.purgeNode(e, t, r[0].id, !0),
|
|
24008
|
+
return await px(t), await i.clear(), r.length > 0 && a.purgeNode(e, t, r[0].id, !0), e.json({
|
|
23940
24009
|
success: !0,
|
|
23941
24010
|
reorderedCount: r.length
|
|
23942
24011
|
});
|
|
@@ -23998,7 +24067,7 @@ Tx.get("/tree.json", async (e) => {
|
|
|
23998
24067
|
let e = x.map(() => "(?, ?)").join(", "), n = x.flatMap((e) => [f, e]);
|
|
23999
24068
|
await t.prepare(`INSERT OR IGNORE INTO node_channels (nodeId, channelId) VALUES ${e}`).run(...n);
|
|
24000
24069
|
}
|
|
24001
|
-
return await
|
|
24070
|
+
return await px(t), await i.clear(), e.json({
|
|
24002
24071
|
success: !0,
|
|
24003
24072
|
id: f,
|
|
24004
24073
|
treeNodeId: f,
|
|
@@ -24035,14 +24104,14 @@ Tx.get("/tree.json", async (e) => {
|
|
|
24035
24104
|
field: "slug"
|
|
24036
24105
|
}, 409);
|
|
24037
24106
|
}
|
|
24038
|
-
return await t.prepare("DELETE FROM tree_nodes WHERE treeId = ? AND contentId = ?").run(o, d), await t.prepare("\n INSERT INTO tree_nodes (treeId, contentId, parentId, sortOrder)\n VALUES (?, ?, ?, 0)\n ").run(o, d, g), await i.clear(), a.purgeNode(e, t, d, !0),
|
|
24107
|
+
return await t.prepare("DELETE FROM tree_nodes WHERE treeId = ? AND contentId = ?").run(o, d), await t.prepare("\n INSERT INTO tree_nodes (treeId, contentId, parentId, sortOrder)\n VALUES (?, ?, ?, 0)\n ").run(o, d, g), await px(t), await i.clear(), a.purgeNode(e, t, d, !0), e.json({
|
|
24039
24108
|
success: !0,
|
|
24040
24109
|
treeNodeId: d
|
|
24041
24110
|
});
|
|
24042
24111
|
}
|
|
24043
24112
|
if (s === "detach") {
|
|
24044
24113
|
let r = n.contentId || n.id || n.treeNodeId;
|
|
24045
|
-
return r ? (await t.prepare("\n UPDATE tree_nodes \n SET parentId = (SELECT parentId FROM tree_nodes WHERE contentId = ? AND treeId = ?) \n WHERE parentId = ? AND treeId = ?\n ").run(r, o, r, o), await t.prepare("DELETE FROM tree_nodes WHERE contentId = ? AND treeId = ?").run(r, o), await i.clear(), a.purgeNode(e, t, r, !0),
|
|
24114
|
+
return r ? (await t.prepare("\n UPDATE tree_nodes \n SET parentId = (SELECT parentId FROM tree_nodes WHERE contentId = ? AND treeId = ?) \n WHERE parentId = ? AND treeId = ?\n ").run(r, o, r, o), await t.prepare("DELETE FROM tree_nodes WHERE contentId = ? AND treeId = ?").run(r, o), await px(t), await i.clear(), a.purgeNode(e, t, r, !0), e.json({ success: !0 })) : e.json({ error: "contentId required for detach" }, 400);
|
|
24046
24115
|
}
|
|
24047
24116
|
return e.json({ error: "Invalid payload or action" }, 400);
|
|
24048
24117
|
} catch (t) {
|
|
@@ -24106,7 +24175,7 @@ Tx.get("/tree.json", async (e) => {
|
|
|
24106
24175
|
await t.prepare(`INSERT OR IGNORE INTO channel_trees (channelId, treeId, key) VALUES ${n}`).run(...r);
|
|
24107
24176
|
}
|
|
24108
24177
|
}
|
|
24109
|
-
return await $b(e).clear(), new fx(e.env).purgeGlobalCache(e, t),
|
|
24178
|
+
return await px(t), await $b(e).clear(), new fx(e.env).purgeGlobalCache(e, t), e.json({
|
|
24110
24179
|
success: !0,
|
|
24111
24180
|
id: p,
|
|
24112
24181
|
key: o,
|
|
@@ -24125,7 +24194,7 @@ Tx.get("/tree.json", async (e) => {
|
|
|
24125
24194
|
if (!n) return e.json({ error: "Tree ID required" }, 400);
|
|
24126
24195
|
let r = Number(n);
|
|
24127
24196
|
try {
|
|
24128
|
-
return await t.prepare("DELETE FROM trees WHERE id = ?").run(r), await t.prepare("DELETE FROM channel_trees WHERE treeId = ?").run(r), await t.prepare("DELETE FROM tree_nodes WHERE treeId = ?").run(r), await $b(e).clear(), new fx(e.env).purgeGlobalCache(e, t),
|
|
24197
|
+
return await t.prepare("DELETE FROM trees WHERE id = ?").run(r), await t.prepare("DELETE FROM channel_trees WHERE treeId = ?").run(r), await t.prepare("DELETE FROM tree_nodes WHERE treeId = ?").run(r), await px(t), await $b(e).clear(), new fx(e.env).purgeGlobalCache(e, t), e.json({
|
|
24129
24198
|
success: !0,
|
|
24130
24199
|
deletedTreeId: r
|
|
24131
24200
|
});
|
|
@@ -24231,7 +24300,7 @@ kx.get("/", async (e) => {
|
|
|
24231
24300
|
`).run(...n);
|
|
24232
24301
|
}
|
|
24233
24302
|
let k = $b(e);
|
|
24234
|
-
return await k.delete(`channel:${C}`), await k.delete(`channel:${ne}`), await k.clear(), new fx(e.env).purgeGlobalCache(e, t), e.json({
|
|
24303
|
+
return await k.delete(`channel:${C}`), await k.delete(`channel:${ne}`), await k.clear(), await px(t), new fx(e.env).purgeGlobalCache(e, t), e.json({
|
|
24235
24304
|
success: !0,
|
|
24236
24305
|
id: ne
|
|
24237
24306
|
});
|
|
@@ -24248,7 +24317,7 @@ kx.get("/", async (e) => {
|
|
|
24248
24317
|
try {
|
|
24249
24318
|
await t.prepare("DELETE FROM channel_trees WHERE channelId = ?").run(r), await t.prepare("DELETE FROM node_channels WHERE channelId = ?").run(r), await t.prepare("DELETE FROM channels WHERE id = ?").run(r);
|
|
24250
24319
|
let n = $b(e);
|
|
24251
|
-
return await n.delete(`channel:${r}`), await n.clear(), new fx(e.env).purgeGlobalCache(e, t), e.json({
|
|
24320
|
+
return await n.delete(`channel:${r}`), await n.clear(), await px(t), new fx(e.env).purgeGlobalCache(e, t), e.json({
|
|
24252
24321
|
success: !0,
|
|
24253
24322
|
deletedSiteId: r
|
|
24254
24323
|
});
|
package/dist/index.html
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
<title>KAMA</title>
|
|
7
7
|
<link rel="icon" href="/favicon.png">
|
|
8
8
|
<link rel="apple-touch-icon" sizes="180x180" href="/favicon.png">
|
|
9
|
-
<script type="module" crossorigin src="/assets/index-
|
|
10
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
9
|
+
<script type="module" crossorigin src="/assets/index-BoKRJcv3.js"></script>
|
|
10
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Cw7t4FzH.css">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
|
13
13
|
<div id="app"></div>
|