@brightsideoy/kama 1.0.0-alpha.20 → 1.0.0-alpha.21
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/content/definitions/blocks/image-gallery.yaml +34 -0
- package/content/definitions/blocks/youtube.yaml +8 -0
- package/content/definitions/field-sets/access.yaml +10 -0
- package/content/definitions/field-sets/page-base.yaml +16 -1
- package/content/definitions/taxonomies/media-tag.yaml +15 -0
- package/definitions/editor/default.ts +15 -1
- package/dist/assets/AssetEditor-B4W7tV1a.js +1 -0
- package/dist/assets/AssetEditor-D9sz6bfN.css +1 -0
- package/dist/assets/CmsFieldTaxonomy-CVlKL-l2.css +1 -0
- package/dist/assets/CmsFieldTaxonomy-C_AwHDwY.js +1 -0
- package/dist/assets/{CmsHelp-DyPJLGGi.js → CmsHelp-BQkr9KyU.js} +1 -1
- package/dist/assets/{CmsPublisher-DNLwjirk.js → CmsPublisher-XSCPrp5L.js} +1 -1
- package/dist/assets/NodeEditor-4TsNvk2f.css +1 -0
- package/dist/assets/NodeEditor-DA5GRtRP.js +161 -0
- package/dist/assets/{TrashWorkspace-DgIg1v6t.js → TrashWorkspace-CATe46WF.js} +1 -1
- package/dist/assets/index-CY0VYSyt.css +1 -0
- package/dist/assets/index-DdG9Pozx.js +14 -0
- package/dist/assets/{plus-FQRsZBoJ.js → plus-CX_GHzXs.js} +1 -1
- package/dist/assets/useNodes-CqFlc72m.js +1 -0
- package/dist/{dist-D_Q1y4Kh.js → dist-3Xc2TTZw.js} +1117 -456
- package/dist/index.html +4 -4
- package/dist/index.js +1117 -456
- package/dist/schema-compiler.js +1 -1
- package/package.json +5 -5
- package/schema.sql +10 -0
- package/templates/astro-starter/src/components/global/NavigationMenu.astro +11 -3
- package/dist/assets/AssetEditor-D5j7pwcK.css +0 -1
- package/dist/assets/AssetEditor-Dt1zCR7_.js +0 -1
- package/dist/assets/NodeEditor-CiXQKXK1.js +0 -147
- package/dist/assets/NodeEditor-pZI3gu4a.css +0 -1
- package/dist/assets/index-DQ6_RmCI.js +0 -14
- package/dist/assets/index-DcKiaRjI.css +0 -1
- package/dist/assets/useNodes-D2-VxsxR.js +0 -1
- package/templates/astro-starter/old_src/components/blocks/BlockRenderer.astro +0 -143
- package/templates/astro-starter/old_src/components/blocks/ColumnLayout.astro +0 -67
- package/templates/astro-starter/old_src/components/blocks/HeaderImage.astro +0 -126
- package/templates/astro-starter/old_src/components/blocks/Hero.astro +0 -218
- package/templates/astro-starter/old_src/components/blocks/HtmlBlock.astro +0 -25
- package/templates/astro-starter/old_src/components/blocks/ImageBlock.astro +0 -91
- package/templates/astro-starter/old_src/components/blocks/NodeList.astro +0 -274
- package/templates/astro-starter/old_src/components/blocks/TextBlock.astro +0 -15
- package/templates/astro-starter/old_src/components/global/Breadcrumb.astro +0 -108
- package/templates/astro-starter/old_src/components/global/Footer.astro +0 -50
- package/templates/astro-starter/old_src/components/global/Header.astro +0 -171
- package/templates/astro-starter/old_src/components/global/MetaHead.astro +0 -266
- package/templates/astro-starter/old_src/components/global/NavigationMenu.astro +0 -413
- package/templates/astro-starter/old_src/components/ui/KamaImage.astro +0 -180
- package/templates/astro-starter/old_src/layouts/SkeletonLayout.astro +0 -56
- package/templates/astro-starter/old_src/layouts/StandardLayout.astro +0 -63
- package/templates/astro-starter/old_src/lib/cms.ts +0 -219
- package/templates/astro-starter/old_src/lib/media/kama-image-service.ts +0 -67
- package/templates/astro-starter/old_src/lib/media/media-proxy.ts +0 -148
- package/templates/astro-starter/old_src/lib/media/media-url.ts +0 -112
- package/templates/astro-starter/old_src/middleware.ts +0 -536
- package/templates/astro-starter/old_src/pages/404.astro +0 -46
- package/templates/astro-starter/old_src/pages/[...slug].astro +0 -311
- package/templates/astro-starter/old_src/pages/api/load-nodes.ts +0 -68
- package/templates/astro-starter/old_src/pages/api/partials/node-cards.astro +0 -101
- package/templates/astro-starter/old_src/pages/llms-full.txt.ts +0 -171
- package/templates/astro-starter/old_src/pages/llms.txt.ts +0 -113
- package/templates/astro-starter/old_src/pages/media/[...path].ts +0 -14
- package/templates/astro-starter/old_src/pages/partials/footer.astro +0 -69
- package/templates/astro-starter/old_src/pages/partials/nav.astro +0 -141
- package/templates/astro-starter/old_src/styles/standard-theme.css +0 -157
- package/templates/astro-starter/old_src/utils/tiptap.ts +0 -113
|
@@ -189,7 +189,7 @@ function w(e) {
|
|
|
189
189
|
function T(e) {
|
|
190
190
|
return Object.fromEntries(Object.entries(e).sort(([e], [t]) => e.localeCompare(t)));
|
|
191
191
|
}
|
|
192
|
-
var
|
|
192
|
+
var E = m(), D = class {
|
|
193
193
|
static collectMetadata(e, t) {
|
|
194
194
|
let n = this.getMetadataFromRegistry(e), r = Object.assign(Object.assign({}, n?._internal), t?._internal), i = Object.assign(Object.assign({}, n?.param), t?.param), a = Object.assign(Object.assign(Object.assign(Object.assign({}, Object.keys(r).length > 0 ? { _internal: r } : {}), n), t), Object.keys(i).length > 0 ? { param: i } : {});
|
|
195
195
|
if (l(e, [
|
|
@@ -257,7 +257,7 @@ var ee = m(), E = class {
|
|
|
257
257
|
return t ? void 0 : e;
|
|
258
258
|
}
|
|
259
259
|
static getMetadataFromInternalRegistry(e) {
|
|
260
|
-
return
|
|
260
|
+
return E.get(e);
|
|
261
261
|
}
|
|
262
262
|
static getMetadataFromRegistry(e) {
|
|
263
263
|
let t = this.getMetadataFromInternalRegistry(e), n = e.meta();
|
|
@@ -266,45 +266,45 @@ var ee = m(), E = class {
|
|
|
266
266
|
return Object.assign(Object.assign(Object.assign({ _internal: Object.assign(Object.assign({}, o ? { refId: o } : {}), r) }, i), c ? { description: c } : {}), l);
|
|
267
267
|
}
|
|
268
268
|
static setMetadataInRegistry(e, t) {
|
|
269
|
-
|
|
269
|
+
E.add(e, t);
|
|
270
270
|
}
|
|
271
271
|
};
|
|
272
|
-
function
|
|
272
|
+
function O(e, t) {
|
|
273
273
|
let n = e[t];
|
|
274
274
|
typeof n == "function" && (e[t] = function(...e) {
|
|
275
|
-
let t = n.apply(this, e), r =
|
|
276
|
-
return r &&
|
|
275
|
+
let t = n.apply(this, e), r = D.getMetadataFromRegistry(this);
|
|
276
|
+
return r && D.setMetadataInRegistry(t, r), t;
|
|
277
277
|
});
|
|
278
278
|
}
|
|
279
|
-
function
|
|
279
|
+
function ee(e) {
|
|
280
280
|
e.ZodType.prototype.openapi === void 0 && (e.ZodType.prototype.openapi = function(...e) {
|
|
281
|
-
let { refId: t, metadata: n, options: r } =
|
|
281
|
+
let { refId: t, metadata: n, options: r } = k(...e), i = n ?? {}, { param: a } = i, o = s(i, ["param"]), c = D.getMetadataFromRegistry(this) ?? {}, { _internal: u } = c, d = s(c, ["_internal"]), f = Object.assign(Object.assign(Object.assign({}, u), r), t ? { refId: t } : void 0), p = Object.assign(Object.assign(Object.assign({}, d), o), d?.param || a ? { param: Object.assign(Object.assign({}, d?.param), a) } : void 0), m = new this.constructor(this._def);
|
|
282
282
|
function h(e) {
|
|
283
|
-
|
|
283
|
+
D.setMetadataInRegistry(e, Object.assign(Object.assign({}, Object.keys(f).length > 0 ? { _internal: f } : void 0), p));
|
|
284
284
|
}
|
|
285
285
|
if (h(m), l(m, "ZodLazy") && h(this), l(m, "ZodObject")) {
|
|
286
|
-
let e =
|
|
286
|
+
let e = D.getMetadataFromRegistry(m), t = m.extend;
|
|
287
287
|
m.extend = function(...n) {
|
|
288
288
|
let r = t.apply(m, n), i = e ?? {}, { _internal: a } = i, o = s(i, ["_internal"]);
|
|
289
|
-
return
|
|
289
|
+
return D.setMetadataInRegistry(r, { _internal: { extendedFrom: a?.refId ? {
|
|
290
290
|
refId: a.refId,
|
|
291
291
|
schema: m
|
|
292
292
|
} : a?.extendedFrom } }), r.openapi(o);
|
|
293
|
-
},
|
|
293
|
+
}, O(m, "catchall");
|
|
294
294
|
}
|
|
295
|
-
|
|
295
|
+
O(m, "optional"), O(m, "nullable"), O(m, "default"), O(m, "transform"), O(m, "refine"), O(m, "length"), O(m, "min"), O(m, "max");
|
|
296
296
|
let g = m.meta;
|
|
297
297
|
return m.meta = function(...e) {
|
|
298
298
|
let t = g.apply(this, e);
|
|
299
299
|
if (e[0]) {
|
|
300
|
-
let n =
|
|
301
|
-
n &&
|
|
300
|
+
let n = D.getMetadataFromInternalRegistry(this);
|
|
301
|
+
n && D.setMetadataInRegistry(t, Object.assign(Object.assign({}, n), e[0]));
|
|
302
302
|
}
|
|
303
303
|
return t;
|
|
304
304
|
}, m;
|
|
305
305
|
});
|
|
306
306
|
}
|
|
307
|
-
function
|
|
307
|
+
function k(e, t, n) {
|
|
308
308
|
return typeof e == "string" ? {
|
|
309
309
|
refId: e,
|
|
310
310
|
metadata: t,
|
|
@@ -315,10 +315,10 @@ function O(e, t, n) {
|
|
|
315
315
|
options: t
|
|
316
316
|
};
|
|
317
317
|
}
|
|
318
|
-
function
|
|
319
|
-
return b(
|
|
318
|
+
function A(e) {
|
|
319
|
+
return b(D.getOpenApiMetadata(e) ?? {}, _);
|
|
320
320
|
}
|
|
321
|
-
var
|
|
321
|
+
var j = class {
|
|
322
322
|
constructor(e) {
|
|
323
323
|
this.parents = e, this._definitions = [];
|
|
324
324
|
}
|
|
@@ -333,7 +333,7 @@ var A = class {
|
|
|
333
333
|
}), n;
|
|
334
334
|
}
|
|
335
335
|
registerParameter(e, t) {
|
|
336
|
-
let n = this.schemaWithRefId(e, t), r =
|
|
336
|
+
let n = this.schemaWithRefId(e, t), r = D.getOpenApiMetadata(n) ?? {}, i = n.openapi(Object.assign(Object.assign({}, r), { param: Object.assign(Object.assign({}, r?.param), { name: r?.param?.name ?? e }) }));
|
|
337
337
|
return this._definitions.push({
|
|
338
338
|
type: "parameter",
|
|
339
339
|
schema: i
|
|
@@ -365,15 +365,15 @@ var A = class {
|
|
|
365
365
|
schemaWithRefId(e, t) {
|
|
366
366
|
return t.openapi(e);
|
|
367
367
|
}
|
|
368
|
-
},
|
|
368
|
+
}, te = class {
|
|
369
369
|
constructor(e) {
|
|
370
370
|
this.message = e;
|
|
371
371
|
}
|
|
372
|
-
},
|
|
372
|
+
}, ne = class extends te {
|
|
373
373
|
constructor(e, t) {
|
|
374
374
|
super(e), this.data = t;
|
|
375
375
|
}
|
|
376
|
-
}, re = class extends
|
|
376
|
+
}, re = class extends te {
|
|
377
377
|
constructor(e) {
|
|
378
378
|
super(`Missing parameter data, please specify \`${e.missingField}\` and other OpenAPI parameter props using the \`param\` field of \`schema.openapi\``), this.data = e;
|
|
379
379
|
}
|
|
@@ -385,7 +385,7 @@ function ie(e, t) {
|
|
|
385
385
|
throw e instanceof re ? new re(Object.assign(Object.assign({}, e.data), t)) : e;
|
|
386
386
|
}
|
|
387
387
|
}
|
|
388
|
-
var ae = class extends
|
|
388
|
+
var ae = class extends te {
|
|
389
389
|
constructor(e) {
|
|
390
390
|
super("Unknown zod object type, please specify `type` and other OpenAPI props using `schema.openapi`."), this.data = e;
|
|
391
391
|
}
|
|
@@ -413,10 +413,10 @@ var ae = class extends ne {
|
|
|
413
413
|
} : (console.error("No discriminator found for discriminated union", e), { oneOf: o });
|
|
414
414
|
}
|
|
415
415
|
mapDiscriminator(e, t, n) {
|
|
416
|
-
if (e.some((e) =>
|
|
416
|
+
if (e.some((e) => D.getRefId(e) === void 0)) return;
|
|
417
417
|
let r = {};
|
|
418
418
|
for (let i of e) {
|
|
419
|
-
let e =
|
|
419
|
+
let e = D.getRefId(i), a = this.getDiscriminatorValues(i, t);
|
|
420
420
|
for (let t of a) r[t] = n(e);
|
|
421
421
|
}
|
|
422
422
|
return {
|
|
@@ -446,7 +446,7 @@ function le(e) {
|
|
|
446
446
|
var ue = class {
|
|
447
447
|
transform(e, t, n) {
|
|
448
448
|
let { type: r, values: i } = le(e._zod.def.entries);
|
|
449
|
-
if (r === "mixed") throw new
|
|
449
|
+
if (r === "mixed") throw new te("Enum has mixed string and number values, please specify the OpenAPI type manually");
|
|
450
450
|
return Object.assign(Object.assign({}, n(r === "numeric" ? "integer" : "string")), { enum: t ? [...i, null] : i });
|
|
451
451
|
}
|
|
452
452
|
}, de = class {
|
|
@@ -473,7 +473,7 @@ var ue = class {
|
|
|
473
473
|
}
|
|
474
474
|
}, me = class {
|
|
475
475
|
transform(e, t, n, r) {
|
|
476
|
-
let i =
|
|
476
|
+
let i = D.getInternalMetadata(e)?.extendedFrom, a = this.requiredKeysOf(e), o = v(e.def.shape, r);
|
|
477
477
|
if (!i) return Object.assign(Object.assign(Object.assign(Object.assign({}, n("object")), {
|
|
478
478
|
properties: o,
|
|
479
479
|
default: t
|
|
@@ -549,7 +549,7 @@ var ve = class {
|
|
|
549
549
|
this.options = e;
|
|
550
550
|
}
|
|
551
551
|
transform(e, t, n) {
|
|
552
|
-
let r =
|
|
552
|
+
let r = D.getInternalMetadata(e)?.unionPreferredType ?? this.options?.unionPreferredType ?? "anyOf", i = this.flattenUnionTypes(e).map((e) => n(this.unwrapNullable(e)));
|
|
553
553
|
return { [r]: t(i) };
|
|
554
554
|
}
|
|
555
555
|
flattenUnionTypes(e) {
|
|
@@ -624,7 +624,7 @@ var ve = class {
|
|
|
624
624
|
if (l(e, "ZodIntersection")) return this.intersectionTransformer.transform(e, t, (e) => this.versionSpecifics.mapNullableOfArray(e, t), n);
|
|
625
625
|
if (l(e, "ZodRecord")) return this.recordTransformer.transform(e, (e) => this.versionSpecifics.mapNullableType(e, t), n);
|
|
626
626
|
if (l(e, "ZodDate")) return this.dateTransformer.transform((e) => this.versionSpecifics.mapNullableType(e, t));
|
|
627
|
-
let i =
|
|
627
|
+
let i = D.getRefId(e);
|
|
628
628
|
throw new ae({
|
|
629
629
|
currentSchema: e.def,
|
|
630
630
|
schemaName: i
|
|
@@ -692,13 +692,13 @@ var ve = class {
|
|
|
692
692
|
}
|
|
693
693
|
}
|
|
694
694
|
generateParameterDefinition(e) {
|
|
695
|
-
let t =
|
|
695
|
+
let t = D.getRefId(e), n = this.generateParameter(e);
|
|
696
696
|
return t && (this.paramRefs[t] = n), n;
|
|
697
697
|
}
|
|
698
698
|
getParameterRef(e, t) {
|
|
699
|
-
let n =
|
|
699
|
+
let n = D.getOpenApiMetadata(e), r = D.getInternalMetadata(e), i = n?.param, a = r?.refId ? this.paramRefs[r.refId] : void 0;
|
|
700
700
|
if (!(!r?.refId || !a)) {
|
|
701
|
-
if (i && a.in !== i.in || t?.in && a.in !== t.in) throw new
|
|
701
|
+
if (i && a.in !== i.in || t?.in && a.in !== t.in) throw new ne(`Conflicting location for parameter ${a.name}`, {
|
|
702
702
|
key: "in",
|
|
703
703
|
values: x([
|
|
704
704
|
a.in,
|
|
@@ -706,7 +706,7 @@ var ve = class {
|
|
|
706
706
|
i?.in
|
|
707
707
|
])
|
|
708
708
|
});
|
|
709
|
-
if (i && a.name !== i.name || t?.name && a.name !== t?.name) throw new
|
|
709
|
+
if (i && a.name !== i.name || t?.name && a.name !== t?.name) throw new ne("Conflicting names for parameter", {
|
|
710
710
|
key: "name",
|
|
711
711
|
values: x([
|
|
712
712
|
a.name,
|
|
@@ -718,22 +718,22 @@ var ve = class {
|
|
|
718
718
|
}
|
|
719
719
|
}
|
|
720
720
|
generateInlineParameters(e, t) {
|
|
721
|
-
let n =
|
|
721
|
+
let n = D.getOpenApiMetadata(e)?.param, r = this.getParameterRef(e, { in: t });
|
|
722
722
|
if (r) return [r];
|
|
723
723
|
if (l(e, "ZodObject")) {
|
|
724
724
|
let n = e.def.shape;
|
|
725
725
|
return Object.entries(n).map(([e, n]) => {
|
|
726
|
-
let r =
|
|
726
|
+
let r = D.getOpenApiMetadata(n), i = this.getParameterRef(n, {
|
|
727
727
|
in: t,
|
|
728
728
|
name: e
|
|
729
729
|
});
|
|
730
730
|
if (i) return i;
|
|
731
731
|
let a = r?.param;
|
|
732
|
-
if (a?.name && a.name !== e) throw new
|
|
732
|
+
if (a?.name && a.name !== e) throw new ne("Conflicting names for parameter", {
|
|
733
733
|
key: "name",
|
|
734
734
|
values: [e, a.name]
|
|
735
735
|
});
|
|
736
|
-
if (a?.in && a.in !== t) throw new
|
|
736
|
+
if (a?.in && a.in !== t) throw new ne(`Conflicting location for parameter ${a.name ?? e}`, {
|
|
737
737
|
key: "in",
|
|
738
738
|
values: [t, a.in]
|
|
739
739
|
});
|
|
@@ -743,21 +743,21 @@ var ve = class {
|
|
|
743
743
|
});
|
|
744
744
|
});
|
|
745
745
|
}
|
|
746
|
-
if (n?.in && n.in !== t) throw new
|
|
746
|
+
if (n?.in && n.in !== t) throw new ne(`Conflicting location for parameter ${n.name}`, {
|
|
747
747
|
key: "in",
|
|
748
748
|
values: [t, n.in]
|
|
749
749
|
});
|
|
750
750
|
return [this.generateParameter(e, { in: t })];
|
|
751
751
|
}
|
|
752
752
|
generateSimpleParameter(e, t) {
|
|
753
|
-
let n =
|
|
753
|
+
let n = D.getParamMetadata(e)?.param, r = Object.assign(Object.assign({}, n), t), i = !f(e) && !d(e), a = this.generateSchemaWithRef(e);
|
|
754
754
|
return Object.assign({
|
|
755
755
|
schema: a,
|
|
756
756
|
required: i
|
|
757
|
-
}, Object.keys(r).length > 0 ?
|
|
757
|
+
}, Object.keys(r).length > 0 ? D.buildParameterMetadata(r) : {});
|
|
758
758
|
}
|
|
759
759
|
generateParameter(e, t) {
|
|
760
|
-
let n =
|
|
760
|
+
let n = D.getOpenApiMetadata(e)?.param, r = t?.name ?? n?.name, i = t?.in ?? n?.in;
|
|
761
761
|
if (!r) throw new re({ missingField: "name" });
|
|
762
762
|
if (!i) throw new re({
|
|
763
763
|
missingField: "in",
|
|
@@ -770,7 +770,7 @@ var ve = class {
|
|
|
770
770
|
});
|
|
771
771
|
}
|
|
772
772
|
generateSchemaWithMetadata(e) {
|
|
773
|
-
let t =
|
|
773
|
+
let t = D.unwrapChained(e), n = D.getOpenApiMetadata(e), r = D.getDefaultValue(e), i = D.getRefId(e);
|
|
774
774
|
if (i && typeof this.schemaRefs[i] == "object") return this.schemaRefs[i];
|
|
775
775
|
if (i && this.schemaRefs[i] === "pending") {
|
|
776
776
|
let t = { $ref: this.generateSchemaRef(i) };
|
|
@@ -778,12 +778,12 @@ var ve = class {
|
|
|
778
778
|
}
|
|
779
779
|
i && !this.schemaRefs[i] && (this.schemaRefs[i] = "pending");
|
|
780
780
|
let a = n?.type ? { type: n.type } : this.toOpenAPISchema(t, d(e), r);
|
|
781
|
-
return n ?
|
|
781
|
+
return n ? D.applySchemaMetadata(a, n) : b(a, _);
|
|
782
782
|
}
|
|
783
783
|
constructReferencedOpenAPISchema(e) {
|
|
784
|
-
let t =
|
|
784
|
+
let t = D.getOpenApiMetadata(e), n = D.unwrapChained(e), r = D.getDefaultValue(e), i = d(e);
|
|
785
785
|
if (t?.type) return this.versionSpecifics.mapNullableType(t.type, i);
|
|
786
|
-
let a =
|
|
786
|
+
let a = D.getRefId(e);
|
|
787
787
|
if (a && typeof this.schemaRefs[a] == "object") return Se.mapRecursive(this.schemaRefs[a], (e) => this.versionSpecifics.mapNullableType(e, i), (e) => this.versionSpecifics.mapNullableOfRef(e, i));
|
|
788
788
|
if (a && this.schemaRefs[a] === "pending") {
|
|
789
789
|
let e = { $ref: this.generateSchemaRef(a) };
|
|
@@ -792,17 +792,17 @@ var ve = class {
|
|
|
792
792
|
return a && !this.schemaRefs[a] && (this.schemaRefs[a] = "pending"), this.toOpenAPISchema(n, i, r);
|
|
793
793
|
}
|
|
794
794
|
generateSimpleSchema(e) {
|
|
795
|
-
let t =
|
|
795
|
+
let t = D.getOpenApiMetadata(e), n = D.getRefId(e);
|
|
796
796
|
if (!n || !this.schemaRefs[n]) return this.generateSchemaWithMetadata(e);
|
|
797
797
|
let r = this.schemaRefs[n], i = { $ref: this.generateSchemaRef(n) };
|
|
798
798
|
if (this.schemaRefs[n] === "pending") return this.versionSpecifics.mapNullableOfRef(i, d(e));
|
|
799
|
-
let a = b(
|
|
799
|
+
let a = b(D.buildSchemaMetadata(t ?? {}), (e, t) => e === void 0 || S(e, r[t]));
|
|
800
800
|
if (a.type) return { allOf: [i, a] };
|
|
801
|
-
let o = b(this.constructReferencedOpenAPISchema(e), (e, t) => e === void 0 || S(e, r[t])), s =
|
|
801
|
+
let o = b(this.constructReferencedOpenAPISchema(e), (e, t) => e === void 0 || S(e, r[t])), s = D.applySchemaMetadata(o, a);
|
|
802
802
|
return Object.keys(s).length > 0 ? { allOf: [i, s] } : i;
|
|
803
803
|
}
|
|
804
804
|
generateSchemaWithRef(e) {
|
|
805
|
-
let t =
|
|
805
|
+
let t = D.getRefId(e);
|
|
806
806
|
return t && !this.schemaRefs[t] ? (this.schemaRefs[t] = this.generateSimpleSchema(e), { $ref: this.generateSchemaRef(t) }) : this.generateSimpleSchema(e);
|
|
807
807
|
}
|
|
808
808
|
generateSchemaRef(e) {
|
|
@@ -16403,7 +16403,7 @@ var $y = class t extends e {
|
|
|
16403
16403
|
defaultHook;
|
|
16404
16404
|
#e;
|
|
16405
16405
|
constructor(e) {
|
|
16406
|
-
super(e), this.openAPIRegistry = new
|
|
16406
|
+
super(e), this.openAPIRegistry = new j(), this.defaultHook = e?.defaultHook;
|
|
16407
16407
|
}
|
|
16408
16408
|
#t() {
|
|
16409
16409
|
if (this.defaultHook) return this.defaultHook;
|
|
@@ -16518,8 +16518,8 @@ var $y = class t extends e {
|
|
|
16518
16518
|
path: Me(r, n._basePath.replaceAll(/:([^\/]+)/g, "{$1}"), e.webhook.path)
|
|
16519
16519
|
});
|
|
16520
16520
|
return;
|
|
16521
|
-
case "schema": return this.openAPIRegistry.register(
|
|
16522
|
-
case "parameter": return this.openAPIRegistry.registerParameter(
|
|
16521
|
+
case "schema": return this.openAPIRegistry.register(A(e.schema)._internal?.refId, e.schema);
|
|
16522
|
+
case "parameter": return this.openAPIRegistry.registerParameter(A(e.schema)._internal?.refId, e.schema);
|
|
16523
16523
|
default: throw Error(`Unknown registry type: ${e}`);
|
|
16524
16524
|
}
|
|
16525
16525
|
}), this) : this;
|
|
@@ -16543,7 +16543,7 @@ var $y = class t extends e {
|
|
|
16543
16543
|
};
|
|
16544
16544
|
return Object.defineProperty(t, "getRoutingPath", { enumerable: !1 });
|
|
16545
16545
|
};
|
|
16546
|
-
|
|
16546
|
+
ee(Xy);
|
|
16547
16547
|
function tb(e, t) {
|
|
16548
16548
|
let n = {};
|
|
16549
16549
|
return Object.keys(e.paths).forEach((r) => {
|
|
@@ -16928,6 +16928,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
16928
16928
|
liveSync: !0,
|
|
16929
16929
|
rules: {}
|
|
16930
16930
|
},
|
|
16931
|
+
notInMenu: {
|
|
16932
|
+
type: "boolean",
|
|
16933
|
+
label: "Not in Menu",
|
|
16934
|
+
default: !1,
|
|
16935
|
+
public: !0,
|
|
16936
|
+
inTree: !0,
|
|
16937
|
+
variant: "danger",
|
|
16938
|
+
dbType: "integer",
|
|
16939
|
+
position: "sidebar",
|
|
16940
|
+
rules: {}
|
|
16941
|
+
},
|
|
16931
16942
|
startShowingAt: {
|
|
16932
16943
|
type: "datetime",
|
|
16933
16944
|
label: "Start Showing At",
|
|
@@ -17000,6 +17011,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
17000
17011
|
liveSync: !0,
|
|
17001
17012
|
rules: {}
|
|
17002
17013
|
},
|
|
17014
|
+
notInMenu: {
|
|
17015
|
+
type: "boolean",
|
|
17016
|
+
label: "Not in Menu",
|
|
17017
|
+
default: !1,
|
|
17018
|
+
public: !0,
|
|
17019
|
+
inTree: !0,
|
|
17020
|
+
variant: "danger",
|
|
17021
|
+
dbType: "integer",
|
|
17022
|
+
position: "sidebar",
|
|
17023
|
+
rules: {}
|
|
17024
|
+
},
|
|
17003
17025
|
startShowingAt: {
|
|
17004
17026
|
type: "datetime",
|
|
17005
17027
|
label: "Start Showing At",
|
|
@@ -17061,6 +17083,21 @@ var Tb = /* @__PURE__ */ o({
|
|
|
17061
17083
|
required: !0,
|
|
17062
17084
|
rules: { required: !0 }
|
|
17063
17085
|
},
|
|
17086
|
+
disableTitleInContent: {
|
|
17087
|
+
label: "Disable Title in Content",
|
|
17088
|
+
type: "boolean",
|
|
17089
|
+
dbType: "boolean",
|
|
17090
|
+
public: !0,
|
|
17091
|
+
rules: {}
|
|
17092
|
+
},
|
|
17093
|
+
menuTitle: {
|
|
17094
|
+
label: "Menu Title",
|
|
17095
|
+
type: "text",
|
|
17096
|
+
inTree: !0,
|
|
17097
|
+
public: !0,
|
|
17098
|
+
default: "",
|
|
17099
|
+
rules: {}
|
|
17100
|
+
},
|
|
17064
17101
|
slug: {
|
|
17065
17102
|
linkedTo: "title",
|
|
17066
17103
|
rules: {}
|
|
@@ -17329,6 +17366,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
17329
17366
|
liveSync: !0,
|
|
17330
17367
|
rules: {}
|
|
17331
17368
|
},
|
|
17369
|
+
notInMenu: {
|
|
17370
|
+
type: "boolean",
|
|
17371
|
+
label: "Not in Menu",
|
|
17372
|
+
default: !1,
|
|
17373
|
+
public: !0,
|
|
17374
|
+
inTree: !0,
|
|
17375
|
+
variant: "danger",
|
|
17376
|
+
dbType: "integer",
|
|
17377
|
+
position: "sidebar",
|
|
17378
|
+
rules: {}
|
|
17379
|
+
},
|
|
17332
17380
|
startShowingAt: {
|
|
17333
17381
|
type: "datetime",
|
|
17334
17382
|
label: "Start Showing At",
|
|
@@ -17381,6 +17429,21 @@ var Tb = /* @__PURE__ */ o({
|
|
|
17381
17429
|
required: !0,
|
|
17382
17430
|
rules: { required: !0 }
|
|
17383
17431
|
},
|
|
17432
|
+
disableTitleInContent: {
|
|
17433
|
+
label: "Disable Title in Content",
|
|
17434
|
+
type: "boolean",
|
|
17435
|
+
dbType: "boolean",
|
|
17436
|
+
public: !0,
|
|
17437
|
+
rules: {}
|
|
17438
|
+
},
|
|
17439
|
+
menuTitle: {
|
|
17440
|
+
label: "Menu Title",
|
|
17441
|
+
type: "text",
|
|
17442
|
+
inTree: !0,
|
|
17443
|
+
public: !0,
|
|
17444
|
+
default: "",
|
|
17445
|
+
rules: {}
|
|
17446
|
+
},
|
|
17384
17447
|
slug: {
|
|
17385
17448
|
linkedTo: "title",
|
|
17386
17449
|
rules: {}
|
|
@@ -17634,6 +17697,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
17634
17697
|
liveSync: !0,
|
|
17635
17698
|
rules: {}
|
|
17636
17699
|
},
|
|
17700
|
+
notInMenu: {
|
|
17701
|
+
type: "boolean",
|
|
17702
|
+
label: "Not in Menu",
|
|
17703
|
+
default: !1,
|
|
17704
|
+
public: !0,
|
|
17705
|
+
inTree: !0,
|
|
17706
|
+
variant: "danger",
|
|
17707
|
+
dbType: "integer",
|
|
17708
|
+
position: "sidebar",
|
|
17709
|
+
rules: {}
|
|
17710
|
+
},
|
|
17637
17711
|
startShowingAt: {
|
|
17638
17712
|
type: "datetime",
|
|
17639
17713
|
label: "Start Showing At",
|
|
@@ -17705,6 +17779,21 @@ var Tb = /* @__PURE__ */ o({
|
|
|
17705
17779
|
showAsEditorTitle: !0,
|
|
17706
17780
|
rules: { required: !0 }
|
|
17707
17781
|
},
|
|
17782
|
+
disableTitleInContent: {
|
|
17783
|
+
label: "Disable Title in Content",
|
|
17784
|
+
type: "boolean",
|
|
17785
|
+
dbType: "boolean",
|
|
17786
|
+
public: !0,
|
|
17787
|
+
rules: {}
|
|
17788
|
+
},
|
|
17789
|
+
menuTitle: {
|
|
17790
|
+
label: "Menu Title",
|
|
17791
|
+
type: "text",
|
|
17792
|
+
inTree: !0,
|
|
17793
|
+
public: !0,
|
|
17794
|
+
default: "",
|
|
17795
|
+
rules: {}
|
|
17796
|
+
},
|
|
17708
17797
|
slug: {
|
|
17709
17798
|
linkedTo: "title",
|
|
17710
17799
|
rules: {}
|
|
@@ -17834,6 +17923,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
17834
17923
|
liveSync: !0,
|
|
17835
17924
|
rules: {}
|
|
17836
17925
|
},
|
|
17926
|
+
notInMenu: {
|
|
17927
|
+
type: "boolean",
|
|
17928
|
+
label: "Not in Menu",
|
|
17929
|
+
default: !1,
|
|
17930
|
+
public: !0,
|
|
17931
|
+
inTree: !0,
|
|
17932
|
+
variant: "danger",
|
|
17933
|
+
dbType: "integer",
|
|
17934
|
+
position: "sidebar",
|
|
17935
|
+
rules: {}
|
|
17936
|
+
},
|
|
17837
17937
|
startShowingAt: {
|
|
17838
17938
|
type: "datetime",
|
|
17839
17939
|
label: "Start Showing At",
|
|
@@ -17887,6 +17987,21 @@ var Tb = /* @__PURE__ */ o({
|
|
|
17887
17987
|
showAsEditorTitle: !0,
|
|
17888
17988
|
rules: { required: !0 }
|
|
17889
17989
|
},
|
|
17990
|
+
disableTitleInContent: {
|
|
17991
|
+
label: "Disable Title in Content",
|
|
17992
|
+
type: "boolean",
|
|
17993
|
+
dbType: "boolean",
|
|
17994
|
+
public: !0,
|
|
17995
|
+
rules: {}
|
|
17996
|
+
},
|
|
17997
|
+
menuTitle: {
|
|
17998
|
+
label: "Menu Title",
|
|
17999
|
+
type: "text",
|
|
18000
|
+
inTree: !0,
|
|
18001
|
+
public: !0,
|
|
18002
|
+
default: "",
|
|
18003
|
+
rules: {}
|
|
18004
|
+
},
|
|
17890
18005
|
slug: {
|
|
17891
18006
|
linkedTo: "title",
|
|
17892
18007
|
rules: {}
|
|
@@ -18002,6 +18117,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
18002
18117
|
liveSync: !0,
|
|
18003
18118
|
rules: {}
|
|
18004
18119
|
},
|
|
18120
|
+
notInMenu: {
|
|
18121
|
+
type: "boolean",
|
|
18122
|
+
label: "Not in Menu",
|
|
18123
|
+
default: !1,
|
|
18124
|
+
public: !0,
|
|
18125
|
+
inTree: !0,
|
|
18126
|
+
variant: "danger",
|
|
18127
|
+
dbType: "integer",
|
|
18128
|
+
position: "sidebar",
|
|
18129
|
+
rules: {}
|
|
18130
|
+
},
|
|
18005
18131
|
startShowingAt: {
|
|
18006
18132
|
type: "datetime",
|
|
18007
18133
|
label: "Start Showing At",
|
|
@@ -18058,6 +18184,21 @@ var Tb = /* @__PURE__ */ o({
|
|
|
18058
18184
|
label: "Link Text",
|
|
18059
18185
|
rules: {}
|
|
18060
18186
|
},
|
|
18187
|
+
disableTitleInContent: {
|
|
18188
|
+
label: "Disable Title in Content",
|
|
18189
|
+
type: "boolean",
|
|
18190
|
+
dbType: "boolean",
|
|
18191
|
+
public: !0,
|
|
18192
|
+
rules: {}
|
|
18193
|
+
},
|
|
18194
|
+
menuTitle: {
|
|
18195
|
+
label: "Menu Title",
|
|
18196
|
+
type: "text",
|
|
18197
|
+
inTree: !0,
|
|
18198
|
+
public: !0,
|
|
18199
|
+
default: "",
|
|
18200
|
+
rules: {}
|
|
18201
|
+
},
|
|
18061
18202
|
slug: {
|
|
18062
18203
|
label: "Slug",
|
|
18063
18204
|
linkedTo: "menuTitle, title",
|
|
@@ -18097,6 +18238,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
18097
18238
|
liveSync: !0,
|
|
18098
18239
|
rules: {}
|
|
18099
18240
|
},
|
|
18241
|
+
notInMenu: {
|
|
18242
|
+
type: "boolean",
|
|
18243
|
+
label: "Not in Menu",
|
|
18244
|
+
default: !1,
|
|
18245
|
+
public: !0,
|
|
18246
|
+
inTree: !0,
|
|
18247
|
+
variant: "danger",
|
|
18248
|
+
dbType: "integer",
|
|
18249
|
+
position: "sidebar",
|
|
18250
|
+
rules: {}
|
|
18251
|
+
},
|
|
18100
18252
|
startShowingAt: {
|
|
18101
18253
|
type: "datetime",
|
|
18102
18254
|
label: "Start Showing At",
|
|
@@ -18150,6 +18302,21 @@ var Tb = /* @__PURE__ */ o({
|
|
|
18150
18302
|
label: "Link Text",
|
|
18151
18303
|
rules: {}
|
|
18152
18304
|
},
|
|
18305
|
+
disableTitleInContent: {
|
|
18306
|
+
label: "Disable Title in Content",
|
|
18307
|
+
type: "boolean",
|
|
18308
|
+
dbType: "boolean",
|
|
18309
|
+
public: !0,
|
|
18310
|
+
rules: {}
|
|
18311
|
+
},
|
|
18312
|
+
menuTitle: {
|
|
18313
|
+
label: "Menu Title",
|
|
18314
|
+
type: "text",
|
|
18315
|
+
inTree: !0,
|
|
18316
|
+
public: !0,
|
|
18317
|
+
default: "",
|
|
18318
|
+
rules: {}
|
|
18319
|
+
},
|
|
18153
18320
|
slug: {
|
|
18154
18321
|
label: "Slug",
|
|
18155
18322
|
linkedTo: "menuTitle, title",
|
|
@@ -18184,6 +18351,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
18184
18351
|
liveSync: !0,
|
|
18185
18352
|
rules: {}
|
|
18186
18353
|
},
|
|
18354
|
+
notInMenu: {
|
|
18355
|
+
type: "boolean",
|
|
18356
|
+
label: "Not in Menu",
|
|
18357
|
+
default: !1,
|
|
18358
|
+
public: !0,
|
|
18359
|
+
inTree: !0,
|
|
18360
|
+
variant: "danger",
|
|
18361
|
+
dbType: "integer",
|
|
18362
|
+
position: "sidebar",
|
|
18363
|
+
rules: {}
|
|
18364
|
+
},
|
|
18187
18365
|
startShowingAt: {
|
|
18188
18366
|
type: "datetime",
|
|
18189
18367
|
label: "Start Showing At",
|
|
@@ -18247,15 +18425,33 @@ var Tb = /* @__PURE__ */ o({
|
|
|
18247
18425
|
type: "text",
|
|
18248
18426
|
dbType: "text",
|
|
18249
18427
|
public: !0,
|
|
18428
|
+
inTree: !0,
|
|
18250
18429
|
rules: { required: !0 },
|
|
18251
18430
|
required: !0
|
|
18252
18431
|
},
|
|
18432
|
+
disableTitleInContent: {
|
|
18433
|
+
label: "Disable Title in Content",
|
|
18434
|
+
type: "boolean",
|
|
18435
|
+
dbType: "boolean",
|
|
18436
|
+
public: !0,
|
|
18437
|
+
rules: {}
|
|
18438
|
+
},
|
|
18439
|
+
menuTitle: {
|
|
18440
|
+
label: "Menu Title",
|
|
18441
|
+
type: "text",
|
|
18442
|
+
inTree: !0,
|
|
18443
|
+
public: !0,
|
|
18444
|
+
default: "",
|
|
18445
|
+
rules: {},
|
|
18446
|
+
dbType: "text"
|
|
18447
|
+
},
|
|
18253
18448
|
slug: {
|
|
18254
18449
|
label: "URL Slug",
|
|
18255
18450
|
type: "slug",
|
|
18256
|
-
linkedTo: "title",
|
|
18451
|
+
linkedTo: "menuTitle,title",
|
|
18257
18452
|
dbType: "text",
|
|
18258
18453
|
public: !0,
|
|
18454
|
+
inTree: !0,
|
|
18259
18455
|
index: !0,
|
|
18260
18456
|
rules: {
|
|
18261
18457
|
required: !0,
|
|
@@ -18264,13 +18460,6 @@ var Tb = /* @__PURE__ */ o({
|
|
|
18264
18460
|
customMessage: "Slug can only contain lowercase letters, numbers, hyphens, and underscores."
|
|
18265
18461
|
},
|
|
18266
18462
|
required: !0
|
|
18267
|
-
},
|
|
18268
|
-
menuTitle: {
|
|
18269
|
-
label: "Menu Title",
|
|
18270
|
-
type: "text",
|
|
18271
|
-
dbType: "text",
|
|
18272
|
-
public: !0,
|
|
18273
|
-
rules: {}
|
|
18274
18463
|
}
|
|
18275
18464
|
}
|
|
18276
18465
|
},
|
|
@@ -18516,6 +18705,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
18516
18705
|
liveSync: !0,
|
|
18517
18706
|
rules: {}
|
|
18518
18707
|
},
|
|
18708
|
+
notInMenu: {
|
|
18709
|
+
type: "boolean",
|
|
18710
|
+
label: "Not in Menu",
|
|
18711
|
+
default: !1,
|
|
18712
|
+
public: !0,
|
|
18713
|
+
inTree: !0,
|
|
18714
|
+
variant: "danger",
|
|
18715
|
+
dbType: "integer",
|
|
18716
|
+
position: "sidebar",
|
|
18717
|
+
rules: {}
|
|
18718
|
+
},
|
|
18519
18719
|
startShowingAt: {
|
|
18520
18720
|
type: "datetime",
|
|
18521
18721
|
label: "Start Showing At",
|
|
@@ -18567,15 +18767,33 @@ var Tb = /* @__PURE__ */ o({
|
|
|
18567
18767
|
type: "text",
|
|
18568
18768
|
dbType: "text",
|
|
18569
18769
|
public: !0,
|
|
18770
|
+
inTree: !0,
|
|
18570
18771
|
rules: { required: !0 },
|
|
18571
18772
|
required: !0
|
|
18572
18773
|
},
|
|
18774
|
+
disableTitleInContent: {
|
|
18775
|
+
label: "Disable Title in Content",
|
|
18776
|
+
type: "boolean",
|
|
18777
|
+
dbType: "boolean",
|
|
18778
|
+
public: !0,
|
|
18779
|
+
rules: {}
|
|
18780
|
+
},
|
|
18781
|
+
menuTitle: {
|
|
18782
|
+
label: "Menu Title",
|
|
18783
|
+
type: "text",
|
|
18784
|
+
inTree: !0,
|
|
18785
|
+
public: !0,
|
|
18786
|
+
default: "",
|
|
18787
|
+
rules: {},
|
|
18788
|
+
dbType: "text"
|
|
18789
|
+
},
|
|
18573
18790
|
slug: {
|
|
18574
18791
|
label: "URL Slug",
|
|
18575
18792
|
type: "slug",
|
|
18576
|
-
linkedTo: "title",
|
|
18793
|
+
linkedTo: "menuTitle,title",
|
|
18577
18794
|
dbType: "text",
|
|
18578
18795
|
public: !0,
|
|
18796
|
+
inTree: !0,
|
|
18579
18797
|
index: !0,
|
|
18580
18798
|
rules: {
|
|
18581
18799
|
required: !0,
|
|
@@ -18585,13 +18803,6 @@ var Tb = /* @__PURE__ */ o({
|
|
|
18585
18803
|
},
|
|
18586
18804
|
required: !0
|
|
18587
18805
|
},
|
|
18588
|
-
menuTitle: {
|
|
18589
|
-
label: "Menu Title",
|
|
18590
|
-
type: "text",
|
|
18591
|
-
dbType: "text",
|
|
18592
|
-
public: !0,
|
|
18593
|
-
rules: {}
|
|
18594
|
-
},
|
|
18595
18806
|
css: {
|
|
18596
18807
|
label: "CSS",
|
|
18597
18808
|
type: "textarea",
|
|
@@ -18813,6 +19024,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
18813
19024
|
liveSync: !0,
|
|
18814
19025
|
rules: {}
|
|
18815
19026
|
},
|
|
19027
|
+
notInMenu: {
|
|
19028
|
+
type: "boolean",
|
|
19029
|
+
label: "Not in Menu",
|
|
19030
|
+
default: !1,
|
|
19031
|
+
public: !0,
|
|
19032
|
+
inTree: !0,
|
|
19033
|
+
variant: "danger",
|
|
19034
|
+
dbType: "integer",
|
|
19035
|
+
position: "sidebar",
|
|
19036
|
+
rules: {}
|
|
19037
|
+
},
|
|
18816
19038
|
startShowingAt: {
|
|
18817
19039
|
type: "datetime",
|
|
18818
19040
|
label: "Start Showing At",
|
|
@@ -18875,15 +19097,33 @@ var Tb = /* @__PURE__ */ o({
|
|
|
18875
19097
|
type: "text",
|
|
18876
19098
|
dbType: "text",
|
|
18877
19099
|
public: !0,
|
|
19100
|
+
inTree: !0,
|
|
18878
19101
|
rules: { required: !0 },
|
|
18879
19102
|
required: !0
|
|
18880
19103
|
},
|
|
19104
|
+
disableTitleInContent: {
|
|
19105
|
+
label: "Disable Title in Content",
|
|
19106
|
+
type: "boolean",
|
|
19107
|
+
dbType: "boolean",
|
|
19108
|
+
public: !0,
|
|
19109
|
+
rules: {}
|
|
19110
|
+
},
|
|
19111
|
+
menuTitle: {
|
|
19112
|
+
label: "Menu Title",
|
|
19113
|
+
type: "text",
|
|
19114
|
+
inTree: !0,
|
|
19115
|
+
public: !0,
|
|
19116
|
+
default: "",
|
|
19117
|
+
rules: {},
|
|
19118
|
+
dbType: "text"
|
|
19119
|
+
},
|
|
18881
19120
|
slug: {
|
|
18882
19121
|
label: "URL Slug",
|
|
18883
19122
|
type: "slug",
|
|
18884
|
-
linkedTo: "title",
|
|
19123
|
+
linkedTo: "menuTitle,title",
|
|
18885
19124
|
dbType: "text",
|
|
18886
19125
|
public: !0,
|
|
19126
|
+
inTree: !0,
|
|
18887
19127
|
index: !0,
|
|
18888
19128
|
rules: {
|
|
18889
19129
|
required: !0,
|
|
@@ -18926,13 +19166,6 @@ var Tb = /* @__PURE__ */ o({
|
|
|
18926
19166
|
value: "inherit"
|
|
18927
19167
|
}],
|
|
18928
19168
|
rules: {}
|
|
18929
|
-
},
|
|
18930
|
-
menuTitle: {
|
|
18931
|
-
label: "Menu Title",
|
|
18932
|
-
type: "text",
|
|
18933
|
-
dbType: "text",
|
|
18934
|
-
public: !0,
|
|
18935
|
-
rules: {}
|
|
18936
19169
|
}
|
|
18937
19170
|
}
|
|
18938
19171
|
},
|
|
@@ -19152,6 +19385,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
19152
19385
|
liveSync: !0,
|
|
19153
19386
|
rules: {}
|
|
19154
19387
|
},
|
|
19388
|
+
notInMenu: {
|
|
19389
|
+
type: "boolean",
|
|
19390
|
+
label: "Not in Menu",
|
|
19391
|
+
default: !1,
|
|
19392
|
+
public: !0,
|
|
19393
|
+
inTree: !0,
|
|
19394
|
+
variant: "danger",
|
|
19395
|
+
dbType: "integer",
|
|
19396
|
+
position: "sidebar",
|
|
19397
|
+
rules: {}
|
|
19398
|
+
},
|
|
19155
19399
|
startShowingAt: {
|
|
19156
19400
|
type: "datetime",
|
|
19157
19401
|
label: "Start Showing At",
|
|
@@ -19203,15 +19447,33 @@ var Tb = /* @__PURE__ */ o({
|
|
|
19203
19447
|
type: "text",
|
|
19204
19448
|
dbType: "text",
|
|
19205
19449
|
public: !0,
|
|
19450
|
+
inTree: !0,
|
|
19206
19451
|
rules: { required: !0 },
|
|
19207
19452
|
required: !0
|
|
19208
19453
|
},
|
|
19454
|
+
disableTitleInContent: {
|
|
19455
|
+
label: "Disable Title in Content",
|
|
19456
|
+
type: "boolean",
|
|
19457
|
+
dbType: "boolean",
|
|
19458
|
+
public: !0,
|
|
19459
|
+
rules: {}
|
|
19460
|
+
},
|
|
19461
|
+
menuTitle: {
|
|
19462
|
+
label: "Menu Title",
|
|
19463
|
+
type: "text",
|
|
19464
|
+
inTree: !0,
|
|
19465
|
+
public: !0,
|
|
19466
|
+
default: "",
|
|
19467
|
+
rules: {},
|
|
19468
|
+
dbType: "text"
|
|
19469
|
+
},
|
|
19209
19470
|
slug: {
|
|
19210
19471
|
label: "URL Slug",
|
|
19211
19472
|
type: "slug",
|
|
19212
|
-
linkedTo: "title",
|
|
19473
|
+
linkedTo: "menuTitle,title",
|
|
19213
19474
|
dbType: "text",
|
|
19214
19475
|
public: !0,
|
|
19476
|
+
inTree: !0,
|
|
19215
19477
|
index: !0,
|
|
19216
19478
|
rules: {
|
|
19217
19479
|
required: !0,
|
|
@@ -19255,13 +19517,6 @@ var Tb = /* @__PURE__ */ o({
|
|
|
19255
19517
|
}],
|
|
19256
19518
|
rules: {}
|
|
19257
19519
|
},
|
|
19258
|
-
menuTitle: {
|
|
19259
|
-
label: "Menu Title",
|
|
19260
|
-
type: "text",
|
|
19261
|
-
dbType: "text",
|
|
19262
|
-
public: !0,
|
|
19263
|
-
rules: {}
|
|
19264
|
-
},
|
|
19265
19520
|
schemaType: {
|
|
19266
19521
|
type: "select",
|
|
19267
19522
|
label: "Schema.org Entity Type",
|
|
@@ -19465,6 +19720,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
19465
19720
|
liveSync: !0,
|
|
19466
19721
|
rules: {}
|
|
19467
19722
|
},
|
|
19723
|
+
notInMenu: {
|
|
19724
|
+
type: "boolean",
|
|
19725
|
+
label: "Not in Menu",
|
|
19726
|
+
default: !1,
|
|
19727
|
+
public: !0,
|
|
19728
|
+
inTree: !0,
|
|
19729
|
+
variant: "danger",
|
|
19730
|
+
dbType: "integer",
|
|
19731
|
+
position: "sidebar",
|
|
19732
|
+
rules: {}
|
|
19733
|
+
},
|
|
19468
19734
|
startShowingAt: {
|
|
19469
19735
|
type: "datetime",
|
|
19470
19736
|
label: "Start Showing At",
|
|
@@ -19541,6 +19807,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
19541
19807
|
liveSync: !0,
|
|
19542
19808
|
rules: {}
|
|
19543
19809
|
},
|
|
19810
|
+
notInMenu: {
|
|
19811
|
+
type: "boolean",
|
|
19812
|
+
label: "Not in Menu",
|
|
19813
|
+
default: !1,
|
|
19814
|
+
public: !0,
|
|
19815
|
+
inTree: !0,
|
|
19816
|
+
variant: "danger",
|
|
19817
|
+
dbType: "integer",
|
|
19818
|
+
position: "sidebar",
|
|
19819
|
+
rules: {}
|
|
19820
|
+
},
|
|
19544
19821
|
startShowingAt: {
|
|
19545
19822
|
type: "datetime",
|
|
19546
19823
|
label: "Start Showing At",
|
|
@@ -19608,6 +19885,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
19608
19885
|
liveSync: !0,
|
|
19609
19886
|
rules: {}
|
|
19610
19887
|
},
|
|
19888
|
+
notInMenu: {
|
|
19889
|
+
type: "boolean",
|
|
19890
|
+
label: "Not in Menu",
|
|
19891
|
+
default: !1,
|
|
19892
|
+
public: !0,
|
|
19893
|
+
inTree: !0,
|
|
19894
|
+
variant: "danger",
|
|
19895
|
+
dbType: "integer",
|
|
19896
|
+
position: "sidebar",
|
|
19897
|
+
rules: {}
|
|
19898
|
+
},
|
|
19611
19899
|
startShowingAt: {
|
|
19612
19900
|
type: "datetime",
|
|
19613
19901
|
label: "Start Showing At",
|
|
@@ -19687,6 +19975,21 @@ var Tb = /* @__PURE__ */ o({
|
|
|
19687
19975
|
public: !0,
|
|
19688
19976
|
rules: { required: !0 }
|
|
19689
19977
|
},
|
|
19978
|
+
disableTitleInContent: {
|
|
19979
|
+
label: "Disable Title in Content",
|
|
19980
|
+
type: "boolean",
|
|
19981
|
+
dbType: "boolean",
|
|
19982
|
+
public: !0,
|
|
19983
|
+
rules: {}
|
|
19984
|
+
},
|
|
19985
|
+
menuTitle: {
|
|
19986
|
+
label: "Menu Title",
|
|
19987
|
+
type: "text",
|
|
19988
|
+
inTree: !0,
|
|
19989
|
+
public: !0,
|
|
19990
|
+
default: "",
|
|
19991
|
+
rules: {}
|
|
19992
|
+
},
|
|
19690
19993
|
slug: {
|
|
19691
19994
|
linkedTo: "title",
|
|
19692
19995
|
rules: {}
|
|
@@ -19777,6 +20080,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
19777
20080
|
liveSync: !0,
|
|
19778
20081
|
rules: {}
|
|
19779
20082
|
},
|
|
20083
|
+
notInMenu: {
|
|
20084
|
+
type: "boolean",
|
|
20085
|
+
label: "Not in Menu",
|
|
20086
|
+
default: !1,
|
|
20087
|
+
public: !0,
|
|
20088
|
+
inTree: !0,
|
|
20089
|
+
variant: "danger",
|
|
20090
|
+
dbType: "integer",
|
|
20091
|
+
position: "sidebar",
|
|
20092
|
+
rules: {}
|
|
20093
|
+
},
|
|
19780
20094
|
startShowingAt: {
|
|
19781
20095
|
type: "datetime",
|
|
19782
20096
|
label: "Start Showing At",
|
|
@@ -19829,6 +20143,21 @@ var Tb = /* @__PURE__ */ o({
|
|
|
19829
20143
|
public: !0,
|
|
19830
20144
|
rules: { required: !0 }
|
|
19831
20145
|
},
|
|
20146
|
+
disableTitleInContent: {
|
|
20147
|
+
label: "Disable Title in Content",
|
|
20148
|
+
type: "boolean",
|
|
20149
|
+
dbType: "boolean",
|
|
20150
|
+
public: !0,
|
|
20151
|
+
rules: {}
|
|
20152
|
+
},
|
|
20153
|
+
menuTitle: {
|
|
20154
|
+
label: "Menu Title",
|
|
20155
|
+
type: "text",
|
|
20156
|
+
inTree: !0,
|
|
20157
|
+
public: !0,
|
|
20158
|
+
default: "",
|
|
20159
|
+
rules: {}
|
|
20160
|
+
},
|
|
19832
20161
|
slug: {
|
|
19833
20162
|
linkedTo: "title",
|
|
19834
20163
|
rules: {}
|
|
@@ -19905,6 +20234,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
19905
20234
|
liveSync: !0,
|
|
19906
20235
|
rules: {}
|
|
19907
20236
|
},
|
|
20237
|
+
notInMenu: {
|
|
20238
|
+
type: "boolean",
|
|
20239
|
+
label: "Not in Menu",
|
|
20240
|
+
default: !1,
|
|
20241
|
+
public: !0,
|
|
20242
|
+
inTree: !0,
|
|
20243
|
+
variant: "danger",
|
|
20244
|
+
dbType: "integer",
|
|
20245
|
+
position: "sidebar",
|
|
20246
|
+
rules: {}
|
|
20247
|
+
},
|
|
19908
20248
|
startShowingAt: {
|
|
19909
20249
|
type: "datetime",
|
|
19910
20250
|
label: "Start Showing At",
|
|
@@ -19985,6 +20325,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
19985
20325
|
liveSync: !0,
|
|
19986
20326
|
rules: {}
|
|
19987
20327
|
},
|
|
20328
|
+
notInMenu: {
|
|
20329
|
+
type: "boolean",
|
|
20330
|
+
label: "Not in Menu",
|
|
20331
|
+
default: !1,
|
|
20332
|
+
public: !0,
|
|
20333
|
+
inTree: !0,
|
|
20334
|
+
variant: "danger",
|
|
20335
|
+
dbType: "integer",
|
|
20336
|
+
position: "sidebar",
|
|
20337
|
+
rules: {}
|
|
20338
|
+
},
|
|
19988
20339
|
startShowingAt: {
|
|
19989
20340
|
type: "datetime",
|
|
19990
20341
|
label: "Start Showing At",
|
|
@@ -20054,6 +20405,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
20054
20405
|
liveSync: !0,
|
|
20055
20406
|
rules: {}
|
|
20056
20407
|
},
|
|
20408
|
+
notInMenu: {
|
|
20409
|
+
type: "boolean",
|
|
20410
|
+
label: "Not in Menu",
|
|
20411
|
+
default: !1,
|
|
20412
|
+
public: !0,
|
|
20413
|
+
inTree: !0,
|
|
20414
|
+
variant: "danger",
|
|
20415
|
+
dbType: "integer",
|
|
20416
|
+
position: "sidebar",
|
|
20417
|
+
rules: {}
|
|
20418
|
+
},
|
|
20057
20419
|
startShowingAt: {
|
|
20058
20420
|
type: "datetime",
|
|
20059
20421
|
label: "Start Showing At",
|
|
@@ -20195,6 +20557,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
20195
20557
|
liveSync: !0,
|
|
20196
20558
|
rules: {}
|
|
20197
20559
|
},
|
|
20560
|
+
notInMenu: {
|
|
20561
|
+
type: "boolean",
|
|
20562
|
+
label: "Not in Menu",
|
|
20563
|
+
default: !1,
|
|
20564
|
+
public: !0,
|
|
20565
|
+
inTree: !0,
|
|
20566
|
+
variant: "danger",
|
|
20567
|
+
dbType: "integer",
|
|
20568
|
+
position: "sidebar",
|
|
20569
|
+
rules: {}
|
|
20570
|
+
},
|
|
20198
20571
|
startShowingAt: {
|
|
20199
20572
|
type: "datetime",
|
|
20200
20573
|
label: "Start Showing At",
|
|
@@ -20321,6 +20694,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
20321
20694
|
liveSync: !0,
|
|
20322
20695
|
rules: {}
|
|
20323
20696
|
},
|
|
20697
|
+
notInMenu: {
|
|
20698
|
+
type: "boolean",
|
|
20699
|
+
label: "Not in Menu",
|
|
20700
|
+
default: !1,
|
|
20701
|
+
public: !0,
|
|
20702
|
+
inTree: !0,
|
|
20703
|
+
variant: "danger",
|
|
20704
|
+
dbType: "integer",
|
|
20705
|
+
position: "sidebar",
|
|
20706
|
+
rules: {}
|
|
20707
|
+
},
|
|
20324
20708
|
startShowingAt: {
|
|
20325
20709
|
type: "datetime",
|
|
20326
20710
|
label: "Start Showing At",
|
|
@@ -20479,6 +20863,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
20479
20863
|
liveSync: !0,
|
|
20480
20864
|
rules: {}
|
|
20481
20865
|
},
|
|
20866
|
+
notInMenu: {
|
|
20867
|
+
type: "boolean",
|
|
20868
|
+
label: "Not in Menu",
|
|
20869
|
+
default: !1,
|
|
20870
|
+
public: !0,
|
|
20871
|
+
inTree: !0,
|
|
20872
|
+
variant: "danger",
|
|
20873
|
+
dbType: "integer",
|
|
20874
|
+
position: "sidebar",
|
|
20875
|
+
rules: {}
|
|
20876
|
+
},
|
|
20482
20877
|
startShowingAt: {
|
|
20483
20878
|
type: "datetime",
|
|
20484
20879
|
label: "Start Showing At",
|
|
@@ -20639,6 +21034,36 @@ var Tb = /* @__PURE__ */ o({
|
|
|
20639
21034
|
isHierarchical: !1,
|
|
20640
21035
|
tabs: {}
|
|
20641
21036
|
},
|
|
21037
|
+
"media-tag": {
|
|
21038
|
+
id: "media-tag",
|
|
21039
|
+
label: "Media Tag",
|
|
21040
|
+
hierarchical: !1,
|
|
21041
|
+
fields: {
|
|
21042
|
+
label: {
|
|
21043
|
+
type: "text",
|
|
21044
|
+
label: "Label",
|
|
21045
|
+
required: !0,
|
|
21046
|
+
rules: { required: !0 }
|
|
21047
|
+
},
|
|
21048
|
+
slug: {
|
|
21049
|
+
linkedTo: "label",
|
|
21050
|
+
rules: {}
|
|
21051
|
+
},
|
|
21052
|
+
iconName: {
|
|
21053
|
+
label: "Icon",
|
|
21054
|
+
type: "icon",
|
|
21055
|
+
dbType: "text",
|
|
21056
|
+
packages: [
|
|
21057
|
+
"heroicons",
|
|
21058
|
+
"lucide",
|
|
21059
|
+
"mdi"
|
|
21060
|
+
],
|
|
21061
|
+
rules: {}
|
|
21062
|
+
}
|
|
21063
|
+
},
|
|
21064
|
+
isHierarchical: !1,
|
|
21065
|
+
tabs: {}
|
|
21066
|
+
},
|
|
20642
21067
|
tags: {
|
|
20643
21068
|
id: "tags",
|
|
20644
21069
|
label: "Tag",
|
|
@@ -20726,6 +21151,16 @@ var Tb = /* @__PURE__ */ o({
|
|
|
20726
21151
|
position: "sidebar",
|
|
20727
21152
|
liveSync: !0
|
|
20728
21153
|
},
|
|
21154
|
+
notInMenu: {
|
|
21155
|
+
type: "boolean",
|
|
21156
|
+
label: "Not in Menu",
|
|
21157
|
+
default: !1,
|
|
21158
|
+
public: !0,
|
|
21159
|
+
inTree: !0,
|
|
21160
|
+
variant: "danger",
|
|
21161
|
+
dbType: "integer",
|
|
21162
|
+
position: "sidebar"
|
|
21163
|
+
},
|
|
20729
21164
|
startShowingAt: {
|
|
20730
21165
|
type: "datetime",
|
|
20731
21166
|
label: "Start Showing At",
|
|
@@ -20769,6 +21204,16 @@ var Tb = /* @__PURE__ */ o({
|
|
|
20769
21204
|
position: "sidebar",
|
|
20770
21205
|
liveSync: !0
|
|
20771
21206
|
},
|
|
21207
|
+
notInMenu: {
|
|
21208
|
+
type: "boolean",
|
|
21209
|
+
label: "Not in Menu",
|
|
21210
|
+
default: !1,
|
|
21211
|
+
public: !0,
|
|
21212
|
+
inTree: !0,
|
|
21213
|
+
variant: "danger",
|
|
21214
|
+
dbType: "integer",
|
|
21215
|
+
position: "sidebar"
|
|
21216
|
+
},
|
|
20772
21217
|
startShowingAt: {
|
|
20773
21218
|
type: "datetime",
|
|
20774
21219
|
label: "Start Showing At",
|
|
@@ -20820,6 +21265,16 @@ var Tb = /* @__PURE__ */ o({
|
|
|
20820
21265
|
position: "sidebar",
|
|
20821
21266
|
liveSync: !0
|
|
20822
21267
|
},
|
|
21268
|
+
notInMenu: {
|
|
21269
|
+
type: "boolean",
|
|
21270
|
+
label: "Not in Menu",
|
|
21271
|
+
default: !1,
|
|
21272
|
+
public: !0,
|
|
21273
|
+
inTree: !0,
|
|
21274
|
+
variant: "danger",
|
|
21275
|
+
dbType: "integer",
|
|
21276
|
+
position: "sidebar"
|
|
21277
|
+
},
|
|
20823
21278
|
startShowingAt: {
|
|
20824
21279
|
type: "datetime",
|
|
20825
21280
|
label: "Start Showing At",
|
|
@@ -20883,6 +21338,16 @@ var Tb = /* @__PURE__ */ o({
|
|
|
20883
21338
|
position: "sidebar",
|
|
20884
21339
|
liveSync: !0
|
|
20885
21340
|
},
|
|
21341
|
+
notInMenu: {
|
|
21342
|
+
type: "boolean",
|
|
21343
|
+
label: "Not in Menu",
|
|
21344
|
+
default: !1,
|
|
21345
|
+
public: !0,
|
|
21346
|
+
inTree: !0,
|
|
21347
|
+
variant: "danger",
|
|
21348
|
+
dbType: "integer",
|
|
21349
|
+
position: "sidebar"
|
|
21350
|
+
},
|
|
20886
21351
|
startShowingAt: {
|
|
20887
21352
|
type: "datetime",
|
|
20888
21353
|
label: "Start Showing At",
|
|
@@ -20926,6 +21391,16 @@ var Tb = /* @__PURE__ */ o({
|
|
|
20926
21391
|
position: "sidebar",
|
|
20927
21392
|
liveSync: !0
|
|
20928
21393
|
},
|
|
21394
|
+
notInMenu: {
|
|
21395
|
+
type: "boolean",
|
|
21396
|
+
label: "Not in Menu",
|
|
21397
|
+
default: !1,
|
|
21398
|
+
public: !0,
|
|
21399
|
+
inTree: !0,
|
|
21400
|
+
variant: "danger",
|
|
21401
|
+
dbType: "integer",
|
|
21402
|
+
position: "sidebar"
|
|
21403
|
+
},
|
|
20929
21404
|
startShowingAt: {
|
|
20930
21405
|
type: "datetime",
|
|
20931
21406
|
label: "Start Showing At",
|
|
@@ -20944,6 +21419,60 @@ var Tb = /* @__PURE__ */ o({
|
|
|
20944
21419
|
} },
|
|
20945
21420
|
category: "Content"
|
|
20946
21421
|
},
|
|
21422
|
+
"image-gallery": {
|
|
21423
|
+
id: "image-gallery",
|
|
21424
|
+
label: "Image Gallery",
|
|
21425
|
+
group: "Media",
|
|
21426
|
+
fields: {
|
|
21427
|
+
columns: {
|
|
21428
|
+
label: "Column Count",
|
|
21429
|
+
type: "select",
|
|
21430
|
+
default: "2",
|
|
21431
|
+
public: !0,
|
|
21432
|
+
options: [
|
|
21433
|
+
{
|
|
21434
|
+
label: "1 Column (Full Width)",
|
|
21435
|
+
value: "1"
|
|
21436
|
+
},
|
|
21437
|
+
{
|
|
21438
|
+
label: "2 Columns",
|
|
21439
|
+
value: "2"
|
|
21440
|
+
},
|
|
21441
|
+
{
|
|
21442
|
+
label: "3 Columns",
|
|
21443
|
+
value: "3"
|
|
21444
|
+
},
|
|
21445
|
+
{
|
|
21446
|
+
label: "4 Columns",
|
|
21447
|
+
value: "4"
|
|
21448
|
+
},
|
|
21449
|
+
{
|
|
21450
|
+
label: "6 Columns",
|
|
21451
|
+
value: "6"
|
|
21452
|
+
}
|
|
21453
|
+
],
|
|
21454
|
+
rules: {}
|
|
21455
|
+
},
|
|
21456
|
+
crop: {
|
|
21457
|
+
label: "Crop Ratio",
|
|
21458
|
+
rules: {}
|
|
21459
|
+
},
|
|
21460
|
+
images: {
|
|
21461
|
+
label: "Gallery Images",
|
|
21462
|
+
type: "image",
|
|
21463
|
+
multiple: !0,
|
|
21464
|
+
maxSizeMB: 20,
|
|
21465
|
+
allowedTypes: ["image/*"],
|
|
21466
|
+
public: !0,
|
|
21467
|
+
crops: { standard: {
|
|
21468
|
+
label: "Standard Portrait (4:3)",
|
|
21469
|
+
aspectRatio: 1.8
|
|
21470
|
+
} },
|
|
21471
|
+
rules: {}
|
|
21472
|
+
}
|
|
21473
|
+
},
|
|
21474
|
+
category: "Content"
|
|
21475
|
+
},
|
|
20947
21476
|
image_card: {
|
|
20948
21477
|
id: "image_card",
|
|
20949
21478
|
label: "Image Card",
|
|
@@ -21019,6 +21548,16 @@ var Tb = /* @__PURE__ */ o({
|
|
|
21019
21548
|
position: "sidebar",
|
|
21020
21549
|
liveSync: !0
|
|
21021
21550
|
},
|
|
21551
|
+
notInMenu: {
|
|
21552
|
+
type: "boolean",
|
|
21553
|
+
label: "Not in Menu",
|
|
21554
|
+
default: !1,
|
|
21555
|
+
public: !0,
|
|
21556
|
+
inTree: !0,
|
|
21557
|
+
variant: "danger",
|
|
21558
|
+
dbType: "integer",
|
|
21559
|
+
position: "sidebar"
|
|
21560
|
+
},
|
|
21022
21561
|
startShowingAt: {
|
|
21023
21562
|
type: "datetime",
|
|
21024
21563
|
label: "Start Showing At",
|
|
@@ -21140,6 +21679,16 @@ var Tb = /* @__PURE__ */ o({
|
|
|
21140
21679
|
position: "sidebar",
|
|
21141
21680
|
liveSync: !0
|
|
21142
21681
|
},
|
|
21682
|
+
notInMenu: {
|
|
21683
|
+
type: "boolean",
|
|
21684
|
+
label: "Not in Menu",
|
|
21685
|
+
default: !1,
|
|
21686
|
+
public: !0,
|
|
21687
|
+
inTree: !0,
|
|
21688
|
+
variant: "danger",
|
|
21689
|
+
dbType: "integer",
|
|
21690
|
+
position: "sidebar"
|
|
21691
|
+
},
|
|
21143
21692
|
startShowingAt: {
|
|
21144
21693
|
type: "datetime",
|
|
21145
21694
|
label: "Start Showing At",
|
|
@@ -21201,6 +21750,16 @@ var Tb = /* @__PURE__ */ o({
|
|
|
21201
21750
|
position: "sidebar",
|
|
21202
21751
|
liveSync: !0
|
|
21203
21752
|
},
|
|
21753
|
+
notInMenu: {
|
|
21754
|
+
type: "boolean",
|
|
21755
|
+
label: "Not in Menu",
|
|
21756
|
+
default: !1,
|
|
21757
|
+
public: !0,
|
|
21758
|
+
inTree: !0,
|
|
21759
|
+
variant: "danger",
|
|
21760
|
+
dbType: "integer",
|
|
21761
|
+
position: "sidebar"
|
|
21762
|
+
},
|
|
21204
21763
|
startShowingAt: {
|
|
21205
21764
|
type: "datetime",
|
|
21206
21765
|
label: "Start Showing At",
|
|
@@ -21246,6 +21805,16 @@ var Tb = /* @__PURE__ */ o({
|
|
|
21246
21805
|
position: "sidebar",
|
|
21247
21806
|
liveSync: !0
|
|
21248
21807
|
},
|
|
21808
|
+
notInMenu: {
|
|
21809
|
+
type: "boolean",
|
|
21810
|
+
label: "Not in Menu",
|
|
21811
|
+
default: !1,
|
|
21812
|
+
public: !0,
|
|
21813
|
+
inTree: !0,
|
|
21814
|
+
variant: "danger",
|
|
21815
|
+
dbType: "integer",
|
|
21816
|
+
position: "sidebar"
|
|
21817
|
+
},
|
|
21249
21818
|
startShowingAt: {
|
|
21250
21819
|
type: "datetime",
|
|
21251
21820
|
label: "Start Showing At",
|
|
@@ -21264,6 +21833,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
21264
21833
|
},
|
|
21265
21834
|
category: "Content"
|
|
21266
21835
|
},
|
|
21836
|
+
youtube: {
|
|
21837
|
+
id: "youtube",
|
|
21838
|
+
label: "YouTube",
|
|
21839
|
+
group: "Media",
|
|
21840
|
+
fields: { youtubeUrl: {
|
|
21841
|
+
label: "Youtube URL",
|
|
21842
|
+
type: "text",
|
|
21843
|
+
rules: {}
|
|
21844
|
+
} },
|
|
21845
|
+
category: "Content"
|
|
21846
|
+
},
|
|
21267
21847
|
form: {
|
|
21268
21848
|
id: "form",
|
|
21269
21849
|
label: "Dynamic Form",
|
|
@@ -21294,6 +21874,17 @@ var Tb = /* @__PURE__ */ o({
|
|
|
21294
21874
|
liveSync: !0,
|
|
21295
21875
|
rules: {}
|
|
21296
21876
|
},
|
|
21877
|
+
notInMenu: {
|
|
21878
|
+
type: "boolean",
|
|
21879
|
+
label: "Not in Menu",
|
|
21880
|
+
default: !1,
|
|
21881
|
+
public: !0,
|
|
21882
|
+
inTree: !0,
|
|
21883
|
+
variant: "danger",
|
|
21884
|
+
dbType: "integer",
|
|
21885
|
+
position: "sidebar",
|
|
21886
|
+
rules: {}
|
|
21887
|
+
},
|
|
21297
21888
|
startShowingAt: {
|
|
21298
21889
|
type: "datetime",
|
|
21299
21890
|
label: "Start Showing At",
|
|
@@ -21579,6 +22170,16 @@ var Tb = /* @__PURE__ */ o({
|
|
|
21579
22170
|
position: "sidebar",
|
|
21580
22171
|
liveSync: !0
|
|
21581
22172
|
},
|
|
22173
|
+
notInMenu: {
|
|
22174
|
+
type: "boolean",
|
|
22175
|
+
label: "Not in Menu",
|
|
22176
|
+
default: !1,
|
|
22177
|
+
public: !0,
|
|
22178
|
+
inTree: !0,
|
|
22179
|
+
variant: "danger",
|
|
22180
|
+
dbType: "integer",
|
|
22181
|
+
position: "sidebar"
|
|
22182
|
+
},
|
|
21582
22183
|
startShowingAt: {
|
|
21583
22184
|
type: "datetime",
|
|
21584
22185
|
label: "Start Showing At",
|
|
@@ -21758,14 +22359,29 @@ var Tb = /* @__PURE__ */ o({
|
|
|
21758
22359
|
type: "text",
|
|
21759
22360
|
dbType: "text",
|
|
21760
22361
|
public: !0,
|
|
22362
|
+
inTree: !0,
|
|
21761
22363
|
rules: { required: !0 }
|
|
21762
22364
|
},
|
|
22365
|
+
disableTitleInContent: {
|
|
22366
|
+
label: "Disable Title in Content",
|
|
22367
|
+
type: "boolean",
|
|
22368
|
+
dbType: "boolean",
|
|
22369
|
+
public: !0
|
|
22370
|
+
},
|
|
22371
|
+
menuTitle: {
|
|
22372
|
+
label: "Menu Title",
|
|
22373
|
+
type: "text",
|
|
22374
|
+
inTree: !0,
|
|
22375
|
+
public: !0,
|
|
22376
|
+
default: ""
|
|
22377
|
+
},
|
|
21763
22378
|
slug: {
|
|
21764
22379
|
label: "URL Slug",
|
|
21765
22380
|
type: "slug",
|
|
21766
|
-
linkedTo: "title",
|
|
22381
|
+
linkedTo: "menuTitle,title",
|
|
21767
22382
|
dbType: "text",
|
|
21768
22383
|
public: !0,
|
|
22384
|
+
inTree: !0,
|
|
21769
22385
|
index: !0,
|
|
21770
22386
|
rules: {
|
|
21771
22387
|
required: !0,
|
|
@@ -22094,7 +22710,13 @@ var Tb = /* @__PURE__ */ o({
|
|
|
22094
22710
|
treeTemplate: null,
|
|
22095
22711
|
channelTemplate: null,
|
|
22096
22712
|
userTemplate: null,
|
|
22097
|
-
treeExposedFields: [
|
|
22713
|
+
treeExposedFields: [
|
|
22714
|
+
"summary",
|
|
22715
|
+
"notInMenu",
|
|
22716
|
+
"title",
|
|
22717
|
+
"menuTitle",
|
|
22718
|
+
"slug"
|
|
22719
|
+
]
|
|
22098
22720
|
}, Db = Eb, Ob = {
|
|
22099
22721
|
content_schemas: "\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n type TEXT UNIQUE NOT NULL,\n schemaJson TEXT NOT NULL,\n isSystem INTEGER DEFAULT 1,\n createdAt TEXT DEFAULT CURRENT_TIMESTAMP,\n updatedAt TEXT DEFAULT CURRENT_TIMESTAMP\n ",
|
|
22100
22722
|
users: "\n id TEXT PRIMARY KEY,\n email UNIQUE NOT NULL,\n name TEXT NOT NULL,\n globalRole TEXT DEFAULT 'editor',\n createdAt TEXT DEFAULT CURRENT_TIMESTAMP,\n updatedAt TEXT DEFAULT CURRENT_TIMESTAMP\n ",
|
|
@@ -22112,9 +22734,10 @@ var Tb = /* @__PURE__ */ o({
|
|
|
22112
22734
|
node_assets: "\n nodeId INTEGER NOT NULL,\n assetId TEXT NOT NULL,\n fieldKey TEXT NOT NULL,\n sortOrder INTEGER DEFAULT 0,\n PRIMARY KEY (nodeId, assetId, fieldKey),\n FOREIGN KEY (nodeId) REFERENCES content_nodes(id) ON DELETE CASCADE,\n FOREIGN KEY (assetId) REFERENCES assets(id) ON DELETE CASCADE\n ",
|
|
22113
22735
|
taxonomy_terms: "\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n taxonomy TEXT NOT NULL,\n key TEXT NOT NULL,\n label TEXT NOT NULL,\n parentId INTEGER,\n sortOrder INTEGER DEFAULT 0,\n dataJson TEXT,\n createdAt TEXT DEFAULT CURRENT_TIMESTAMP,\n updatedAt TEXT DEFAULT CURRENT_TIMESTAMP,\n FOREIGN KEY (parentId) REFERENCES taxonomy_terms(id) ON DELETE CASCADE,\n UNIQUE(taxonomy, key)\n ",
|
|
22114
22736
|
node_terms: "\n nodeId INTEGER NOT NULL,\n termId INTEGER NOT NULL,\n fieldKey TEXT NOT NULL,\n sortOrder INTEGER DEFAULT 0,\n PRIMARY KEY (nodeId, termId, fieldKey),\n FOREIGN KEY (nodeId) REFERENCES content_nodes(id) ON DELETE CASCADE,\n FOREIGN KEY (termId) REFERENCES taxonomy_terms(id) ON DELETE CASCADE\n ",
|
|
22737
|
+
asset_terms: "\n assetId TEXT NOT NULL,\n termId INTEGER NOT NULL,\n PRIMARY KEY (assetId, termId),\n FOREIGN KEY (assetId) REFERENCES assets(id) ON DELETE CASCADE,\n FOREIGN KEY (termId) REFERENCES taxonomy_terms(id) ON DELETE CASCADE\n ",
|
|
22115
22738
|
node_relations: "\n sourceNodeId INTEGER NOT NULL,\n targetNodeId INTEGER NOT NULL,\n fieldKey TEXT NOT NULL,\n sortOrder INTEGER DEFAULT 0,\n PRIMARY KEY (sourceNodeId, targetNodeId, fieldKey),\n FOREIGN KEY (sourceNodeId) REFERENCES content_nodes(id) ON DELETE CASCADE,\n FOREIGN KEY (targetNodeId) REFERENCES content_nodes(id) ON DELETE CASCADE\n ",
|
|
22116
22739
|
node_routes: "\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n path TEXT NOT NULL,\n channelId INTEGER NOT NULL,\n nodeId INTEGER,\n treeId INTEGER,\n isCanonical INTEGER DEFAULT 1,\n redirectUrl TEXT,\n createdAt TEXT DEFAULT CURRENT_TIMESTAMP,\n updatedAt TEXT DEFAULT CURRENT_TIMESTAMP,\n FOREIGN KEY (channelId) REFERENCES channels(id) ON DELETE CASCADE,\n FOREIGN KEY (nodeId) REFERENCES content_nodes(id) ON DELETE CASCADE,\n FOREIGN KEY (treeId) REFERENCES trees(id) ON DELETE CASCADE,\n UNIQUE(path, channelId)\n "
|
|
22117
|
-
}, kb = /* @__PURE__ */ "CREATE INDEX IF NOT EXISTS idx_tree_nodes_tree_parent ON tree_nodes(treeId, parentId);.CREATE INDEX IF NOT EXISTS idx_tree_nodes_contentId ON tree_nodes(contentId);.CREATE INDEX IF NOT EXISTS idx_content_nodes_slug_status ON content_nodes(slug, status);.CREATE INDEX IF NOT EXISTS idx_content_blocks_node ON content_blocks(contentId, isDraft);.CREATE INDEX IF NOT EXISTS idx_node_assets_nodeId ON node_assets(nodeId);.CREATE INDEX IF NOT EXISTS idx_node_assets_assetId ON node_assets(assetId);.CREATE INDEX IF NOT EXISTS idx_content_schemas_type ON content_schemas(type);.CREATE INDEX IF NOT EXISTS idx_sessions_user ON sessions(userId);.CREATE INDEX IF NOT EXISTS idx_sessions_expires ON sessions(expiresAt);.CREATE INDEX IF NOT EXISTS idx_channels_visibility ON channels(isHidden);.CREATE INDEX IF NOT EXISTS idx_trees_visibility ON trees(isHidden);.CREATE INDEX IF NOT EXISTS idx_content_nodes_visibility ON content_nodes(isHidden, status);.CREATE INDEX IF NOT EXISTS idx_content_nodes_slug ON content_nodes(slug);.CREATE INDEX IF NOT EXISTS idx_content_nodes_type ON content_nodes(contentType);.CREATE INDEX IF NOT EXISTS idx_content_nodes_deleted_updated ON content_nodes(deletedAt, updatedAt DESC);.CREATE INDEX IF NOT EXISTS idx_tree_nodes_hierarchy ON tree_nodes(treeId, parentId, sortOrder);.CREATE INDEX IF NOT EXISTS idx_tree_nodes_content ON tree_nodes(contentId, treeId);.CREATE INDEX IF NOT EXISTS idx_content_blocks_content ON content_blocks(contentId, isDraft, region, sortOrder);.CREATE INDEX IF NOT EXISTS idx_node_channels_channel ON node_channels(channelId, nodeId);.CREATE INDEX IF NOT EXISTS idx_node_channels_node ON node_channels(nodeId, channelId);.CREATE INDEX IF NOT EXISTS idx_node_assets_node_asset ON node_assets(nodeId, assetId);.CREATE INDEX IF NOT EXISTS idx_node_assets_asset_node ON node_assets(assetId, nodeId);.CREATE UNIQUE INDEX IF NOT EXISTS idx_node_revisions_version ON node_revisions(nodeId, version);.CREATE INDEX IF NOT EXISTS idx_assets_system_created ON assets(isSystemVariant, createdAt DESC);.CREATE INDEX IF NOT EXISTS idx_assets_system_mime ON assets(isSystemVariant, mimeType);.CREATE INDEX IF NOT EXISTS idx_assets_deleted ON assets(deletedAt);.CREATE INDEX IF NOT EXISTS idx_assets_parent ON assets(parentAssetId);.CREATE INDEX IF NOT EXISTS idx_taxonomy_terms_tax ON taxonomy_terms(taxonomy);.CREATE INDEX IF NOT EXISTS idx_node_terms_node ON node_terms(nodeId);.CREATE INDEX IF NOT EXISTS idx_node_terms_term ON node_terms(termId);.CREATE INDEX IF NOT EXISTS idx_node_terms_node_term ON node_terms(nodeId, termId);.CREATE INDEX IF NOT EXISTS idx_node_terms_term_node ON node_terms(termId, nodeId);.CREATE INDEX IF NOT EXISTS idx_node_relations_source ON node_relations(sourceNodeId);.CREATE INDEX IF NOT EXISTS idx_node_relations_target ON node_relations(targetNodeId);.CREATE INDEX IF NOT EXISTS idx_node_routes_lookup ON node_routes(path, channelId);.CREATE INDEX IF NOT EXISTS idx_node_routes_node ON node_routes(nodeId);.CREATE INDEX IF NOT EXISTS idx_content_nodes_public_feed ON content_nodes(contentType, isHidden, status, startShowingAt, stopShowingAt, updatedAt DESC);".split(".");
|
|
22740
|
+
}, kb = /* @__PURE__ */ "CREATE INDEX IF NOT EXISTS idx_tree_nodes_tree_parent ON tree_nodes(treeId, parentId);.CREATE INDEX IF NOT EXISTS idx_tree_nodes_contentId ON tree_nodes(contentId);.CREATE INDEX IF NOT EXISTS idx_content_nodes_slug_status ON content_nodes(slug, status);.CREATE INDEX IF NOT EXISTS idx_content_blocks_node ON content_blocks(contentId, isDraft);.CREATE INDEX IF NOT EXISTS idx_node_assets_nodeId ON node_assets(nodeId);.CREATE INDEX IF NOT EXISTS idx_node_assets_assetId ON node_assets(assetId);.CREATE INDEX IF NOT EXISTS idx_content_schemas_type ON content_schemas(type);.CREATE INDEX IF NOT EXISTS idx_sessions_user ON sessions(userId);.CREATE INDEX IF NOT EXISTS idx_sessions_expires ON sessions(expiresAt);.CREATE INDEX IF NOT EXISTS idx_channels_visibility ON channels(isHidden);.CREATE INDEX IF NOT EXISTS idx_trees_visibility ON trees(isHidden);.CREATE INDEX IF NOT EXISTS idx_content_nodes_visibility ON content_nodes(isHidden, status);.CREATE INDEX IF NOT EXISTS idx_content_nodes_slug ON content_nodes(slug);.CREATE INDEX IF NOT EXISTS idx_content_nodes_type ON content_nodes(contentType);.CREATE INDEX IF NOT EXISTS idx_content_nodes_deleted_updated ON content_nodes(deletedAt, updatedAt DESC);.CREATE INDEX IF NOT EXISTS idx_tree_nodes_hierarchy ON tree_nodes(treeId, parentId, sortOrder);.CREATE INDEX IF NOT EXISTS idx_tree_nodes_content ON tree_nodes(contentId, treeId);.CREATE INDEX IF NOT EXISTS idx_content_blocks_content ON content_blocks(contentId, isDraft, region, sortOrder);.CREATE INDEX IF NOT EXISTS idx_node_channels_channel ON node_channels(channelId, nodeId);.CREATE INDEX IF NOT EXISTS idx_node_channels_node ON node_channels(nodeId, channelId);.CREATE INDEX IF NOT EXISTS idx_node_assets_node_asset ON node_assets(nodeId, assetId);.CREATE INDEX IF NOT EXISTS idx_node_assets_asset_node ON node_assets(assetId, nodeId);.CREATE UNIQUE INDEX IF NOT EXISTS idx_node_revisions_version ON node_revisions(nodeId, version);.CREATE INDEX IF NOT EXISTS idx_assets_system_created ON assets(isSystemVariant, createdAt DESC);.CREATE INDEX IF NOT EXISTS idx_assets_system_mime ON assets(isSystemVariant, mimeType);.CREATE INDEX IF NOT EXISTS idx_assets_deleted ON assets(deletedAt);.CREATE INDEX IF NOT EXISTS idx_assets_parent ON assets(parentAssetId);.CREATE INDEX IF NOT EXISTS idx_taxonomy_terms_tax ON taxonomy_terms(taxonomy);.CREATE INDEX IF NOT EXISTS idx_node_terms_node ON node_terms(nodeId);.CREATE INDEX IF NOT EXISTS idx_node_terms_term ON node_terms(termId);.CREATE INDEX IF NOT EXISTS idx_node_terms_node_term ON node_terms(nodeId, termId);.CREATE INDEX IF NOT EXISTS idx_node_terms_term_node ON node_terms(termId, nodeId);.CREATE INDEX IF NOT EXISTS idx_asset_terms_asset ON asset_terms(assetId);.CREATE INDEX IF NOT EXISTS idx_asset_terms_term ON asset_terms(termId);.CREATE INDEX IF NOT EXISTS idx_node_relations_source ON node_relations(sourceNodeId);.CREATE INDEX IF NOT EXISTS idx_node_relations_target ON node_relations(targetNodeId);.CREATE INDEX IF NOT EXISTS idx_node_routes_lookup ON node_routes(path, channelId);.CREATE INDEX IF NOT EXISTS idx_node_routes_node ON node_routes(nodeId);.CREATE INDEX IF NOT EXISTS idx_content_nodes_public_feed ON content_nodes(contentType, isHidden, status, startShowingAt, stopShowingAt, updatedAt DESC);".split(".");
|
|
22118
22741
|
function Ab(e) {
|
|
22119
22742
|
let t = /* @__PURE__ */ new Set();
|
|
22120
22743
|
function n(e) {
|
|
@@ -22363,15 +22986,15 @@ var Fb = { hasSubscribers: !1 }, Ib = Fb, Lb = Fb, Rb = typeof performance == "o
|
|
|
22363
22986
|
let { max: n = 0, ttl: r, ttlResolution: i = 1, ttlAutopurge: a, updateAgeOnGet: o, updateAgeOnHas: s, allowStale: c, dispose: l, onInsert: u, disposeAfter: d, noDisposeOnSet: f, noUpdateTTL: p, maxSize: m = 0, maxEntrySize: h = 0, sizeCalculation: g, fetchMethod: _, memoMethod: v, noDeleteOnFetchRejection: y, noDeleteOnStaleGet: b, allowStaleOnFetchRejection: x, allowStaleOnFetchAbort: S, ignoreFetchAbort: C, backgroundFetchSize: w = 1, perf: T } = t;
|
|
22364
22987
|
if (this.backgroundFetchSize = w, T !== void 0 && typeof T?.now != "function") throw TypeError("perf option must have a now() method if specified");
|
|
22365
22988
|
if (this.#s = T ?? Rb, n !== 0 && !Wb(n)) throw TypeError("max option must be a nonnegative integer");
|
|
22366
|
-
let
|
|
22367
|
-
if (!
|
|
22989
|
+
let E = n ? Gb(n) : Array;
|
|
22990
|
+
if (!E) throw Error("invalid max value: " + n);
|
|
22368
22991
|
if (this.#e = n, this.#t = m, this.maxEntrySize = h || this.#t, this.sizeCalculation = g, this.sizeCalculation) {
|
|
22369
22992
|
if (!this.#t && !this.maxEntrySize) throw TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");
|
|
22370
22993
|
if (typeof this.sizeCalculation != "function") throw TypeError("sizeCalculation set to non-function");
|
|
22371
22994
|
}
|
|
22372
22995
|
if (v !== void 0 && typeof v != "function") throw TypeError("memoMethod must be a function if defined");
|
|
22373
22996
|
if (this.#o = v, _ !== void 0 && typeof _ != "function") throw TypeError("fetchMethod must be a function if specified");
|
|
22374
|
-
if (this.#a = _, this.#w = !!_, this.#u = /* @__PURE__ */ new Map(), this.#d = Array.from({ length: n }).fill(void 0), this.#f = Array.from({ length: n }).fill(void 0), this.#p = new
|
|
22997
|
+
if (this.#a = _, this.#w = !!_, this.#u = /* @__PURE__ */ new Map(), this.#d = Array.from({ length: n }).fill(void 0), this.#f = Array.from({ length: n }).fill(void 0), this.#p = new E(n), this.#m = new E(n), this.#h = 0, this.#g = 0, this.#_ = qb.create(n), this.#c = 0, this.#l = 0, typeof l == "function" && (this.#n = l), typeof u == "function" && (this.#r = u), typeof d == "function" ? (this.#i = d, this.#v = []) : (this.#i = void 0, this.#v = void 0), this.#C = !!this.#n, this.#E = !!this.#r, this.#T = !!this.#i, this.noDisposeOnSet = !!f, this.noUpdateTTL = !!p, this.noDeleteOnFetchRejection = !!y, this.allowStaleOnFetchRejection = !!x, this.allowStaleOnFetchAbort = !!S, this.ignoreFetchAbort = !!C, this.maxEntrySize !== 0) {
|
|
22375
22998
|
if (this.#t !== 0 && !Wb(this.#t)) throw TypeError("maxSize must be a positive integer if specified");
|
|
22376
22999
|
if (!Wb(this.maxEntrySize)) throw TypeError("maxEntrySize must be a positive integer if specified");
|
|
22377
23000
|
this.#M();
|
|
@@ -23994,7 +24617,15 @@ gx.get("/", async (e) => {
|
|
|
23994
24617
|
if (a) {
|
|
23995
24618
|
let { resolvedLayoutId: e, inheritedFields: r } = await Dx(t, a.parentId, a.treeId);
|
|
23996
24619
|
(s === "inherit" || !s) && (s = e);
|
|
23997
|
-
|
|
24620
|
+
let i = /* @__PURE__ */ new Set();
|
|
24621
|
+
o.fields && Object.entries(o.fields).forEach(([e, t]) => {
|
|
24622
|
+
t?.inheritsFromParent && i.add(e);
|
|
24623
|
+
}), o.tabs && Object.values(o.tabs).forEach((e) => {
|
|
24624
|
+
e.fields && Object.entries(e.fields).forEach(([e, t]) => {
|
|
24625
|
+
t?.inheritsFromParent && i.add(e);
|
|
24626
|
+
});
|
|
24627
|
+
});
|
|
24628
|
+
for (let [e, t] of Object.entries(r)) e !== "layoutId" && e !== "subpageLayoutId" && i.has(e) && (n[e] === void 0 || n[e] === null || n[e] === "") && t !== void 0 && (n[e] = t);
|
|
23998
24629
|
}
|
|
23999
24630
|
s && s !== "inherit" && !((e) => {
|
|
24000
24631
|
if (!o || Object.keys(o).length === 0 || e === o.defaultLayout) return !0;
|
|
@@ -24087,22 +24718,22 @@ gx.get("/", async (e) => {
|
|
|
24087
24718
|
...m,
|
|
24088
24719
|
f,
|
|
24089
24720
|
p
|
|
24090
|
-
], C = await t.prepare(x).all(...S), w = Array.isArray(C) ? C : C?.results || [], T = w.map((e) => e.id),
|
|
24721
|
+
], C = await t.prepare(x).all(...S), w = Array.isArray(C) ? C : C?.results || [], T = w.map((e) => e.id), E = {}, D = {};
|
|
24091
24722
|
if (T.length > 0) {
|
|
24092
24723
|
let e = T.map(() => "?").join(","), n = await t.prepare(`
|
|
24093
24724
|
SELECT nc.nodeId, c.label FROM node_channels nc JOIN channels c ON nc.channelId = c.id WHERE nc.nodeId IN (${e})
|
|
24094
24725
|
`).all(...T);
|
|
24095
24726
|
(Array.isArray(n) ? n : n?.results || []).forEach((e) => {
|
|
24096
|
-
|
|
24727
|
+
E[e.nodeId] || (E[e.nodeId] = []), E[e.nodeId].push(e.label);
|
|
24097
24728
|
});
|
|
24098
24729
|
let r = await t.prepare(`
|
|
24099
24730
|
SELECT tn.contentId as nodeId, t.label FROM tree_nodes tn JOIN trees t ON tn.treeId = t.id WHERE tn.contentId IN (${e})
|
|
24100
24731
|
`).all(...T);
|
|
24101
24732
|
(Array.isArray(r) ? r : r?.results || []).forEach((e) => {
|
|
24102
|
-
|
|
24733
|
+
D[e.nodeId] || (D[e.nodeId] = []), D[e.nodeId].includes(e.label) || D[e.nodeId].push(e.label);
|
|
24103
24734
|
});
|
|
24104
24735
|
}
|
|
24105
|
-
let
|
|
24736
|
+
let O = await Promise.all(w.map(async (e) => {
|
|
24106
24737
|
let n = e.status === "draft" || !!e.hasUnpublishedChanges, r = {
|
|
24107
24738
|
id: e.id,
|
|
24108
24739
|
title: e.title,
|
|
@@ -24122,8 +24753,8 @@ gx.get("/", async (e) => {
|
|
|
24122
24753
|
updatedById: e.updatedById || null,
|
|
24123
24754
|
createdAt: e.createdAt,
|
|
24124
24755
|
updatedAt: e.updatedAt,
|
|
24125
|
-
channelNames:
|
|
24126
|
-
treeNames:
|
|
24756
|
+
channelNames: E[e.id] || [],
|
|
24757
|
+
treeNames: D[e.id] || [],
|
|
24127
24758
|
assetCount: e.assetCount || 0,
|
|
24128
24759
|
imageCount: e.imageCount || 0,
|
|
24129
24760
|
videoCount: e.videoCount || 0,
|
|
@@ -24137,36 +24768,36 @@ gx.get("/", async (e) => {
|
|
|
24137
24768
|
return r;
|
|
24138
24769
|
}));
|
|
24139
24770
|
return e.json({
|
|
24140
|
-
items:
|
|
24771
|
+
items: O,
|
|
24141
24772
|
total: v,
|
|
24142
|
-
hasMore: p +
|
|
24773
|
+
hasMore: p + O.length < v,
|
|
24143
24774
|
offset: p,
|
|
24144
24775
|
limit: f
|
|
24145
24776
|
});
|
|
24146
24777
|
}), gx.post("/", async (e) => {
|
|
24147
|
-
let t = e.get("db"), n = await e.req.json(), r = n.node || n.activeNode || n, i = r.id || n.id, a = i != null && i !== "" && !isNaN(Number(i)) ? Number(i) : null, { title: o, slug: s, language: c, nodeType: l, contentType: u, isHidden: d, hidden: f, is_hidden: p, startShowingAt: m, stopShowingAt: h, blocks: g, channels: _, trees: v, ...y } = r, { cleanedData: b, assetRefs: x, termRefs: S, nodeRefs: C } = ax(Cx(y)), w = xx(d === void 0 ? f === void 0 ? p : f : d), T = l || u || "page",
|
|
24148
|
-
if (
|
|
24149
|
-
let e = await t.prepare("SELECT dataJson FROM trees WHERE id = ? OR key = ? LIMIT 1").get(Number(
|
|
24778
|
+
let t = e.get("db"), n = await e.req.json(), r = n.node || n.activeNode || n, i = r.id || n.id, a = i != null && i !== "" && !isNaN(Number(i)) ? Number(i) : null, { title: o, slug: s, language: c, nodeType: l, contentType: u, isHidden: d, hidden: f, is_hidden: p, startShowingAt: m, stopShowingAt: h, blocks: g, channels: _, trees: v, ...y } = r, { cleanedData: b, assetRefs: x, termRefs: S, nodeRefs: C } = ax(Cx(y)), w = xx(d === void 0 ? f === void 0 ? p : f : d), T = l || u || "page", E = e.get("user")?.id || null, D = typeof c == "string" && c.trim() !== "" ? c.trim() : null, O = v && Array.isArray(v) && v.length > 0 ? v[0] : null, ee = O ? O.treeId || O.id : null, k = null;
|
|
24779
|
+
if (ee) {
|
|
24780
|
+
let e = await t.prepare("SELECT dataJson FROM trees WHERE id = ? OR key = ? LIMIT 1").get(Number(ee) || -1, String(ee));
|
|
24150
24781
|
if (e?.dataJson) try {
|
|
24151
24782
|
let t = typeof e.dataJson == "string" ? JSON.parse(e.dataJson) : e.dataJson;
|
|
24152
|
-
|
|
24783
|
+
k = t.defaultLanguage?.trim() || t.language?.trim() || null;
|
|
24153
24784
|
} catch {}
|
|
24154
24785
|
}
|
|
24155
|
-
if (!
|
|
24786
|
+
if (!k && _ && Array.isArray(_) && _.length > 0) {
|
|
24156
24787
|
let e = typeof _[0] == "object" ? _[0].id : _[0];
|
|
24157
24788
|
if (e && e !== "all") {
|
|
24158
24789
|
let n = await t.prepare("SELECT defaultLanguage, dataJson FROM channels WHERE id = ? LIMIT 1").get(Number(e));
|
|
24159
24790
|
if (n) {
|
|
24160
|
-
if (n.defaultLanguage)
|
|
24791
|
+
if (n.defaultLanguage) k = n.defaultLanguage.trim();
|
|
24161
24792
|
else if (n.dataJson) try {
|
|
24162
24793
|
let e = typeof n.dataJson == "string" ? JSON.parse(n.dataJson) : n.dataJson;
|
|
24163
|
-
|
|
24794
|
+
k = e.defaultLanguage?.trim() || e.language?.trim() || null;
|
|
24164
24795
|
} catch {}
|
|
24165
24796
|
}
|
|
24166
24797
|
}
|
|
24167
24798
|
}
|
|
24168
|
-
|
|
24169
|
-
let
|
|
24799
|
+
D && k && D === k && (D = null);
|
|
24800
|
+
let A = a, j = /* @__PURE__ */ new Set(), te = !1, ne = "draft", re = 0, ie = s === void 0 ? null : bx(s);
|
|
24170
24801
|
if (ie) {
|
|
24171
24802
|
let n = [];
|
|
24172
24803
|
if (v !== void 0 && Array.isArray(v) && v.length > 0) for (let e of v) n.push({
|
|
@@ -24197,8 +24828,8 @@ gx.get("/", async (e) => {
|
|
|
24197
24828
|
}
|
|
24198
24829
|
}
|
|
24199
24830
|
if (a) {
|
|
24200
|
-
let e = await t.prepare("SELECT title, slug, language, contentType, isHidden, startShowingAt, stopShowingAt, draftDataJson, dataJson, publishedAt, status, hasUnpublishedChanges FROM content_nodes WHERE id = ?").get(a), n = o === void 0 ? e?.title || "Untitled" : o, r = ie ?? e?.slug ?? null, i = T || e?.contentType || "page", l = c === void 0 ? e?.language ?? null :
|
|
24201
|
-
|
|
24831
|
+
let e = await t.prepare("SELECT title, slug, language, contentType, isHidden, startShowingAt, stopShowingAt, draftDataJson, dataJson, publishedAt, status, hasUnpublishedChanges FROM content_nodes WHERE id = ?").get(a), n = o === void 0 ? e?.title || "Untitled" : o, r = ie ?? e?.slug ?? null, i = T || e?.contentType || "page", l = c === void 0 ? e?.language ?? null : D, u = w === void 0 ? xx(e?.isHidden) : w, d = m === void 0 ? e?.startShowingAt ?? null : m, f = h === void 0 ? e?.stopShowingAt ?? null : h;
|
|
24832
|
+
te = Tx(e, {
|
|
24202
24833
|
title: n,
|
|
24203
24834
|
slug: r,
|
|
24204
24835
|
isHidden: u,
|
|
@@ -24208,7 +24839,7 @@ gx.get("/", async (e) => {
|
|
|
24208
24839
|
});
|
|
24209
24840
|
let p = e?.draftDataJson || e?.dataJson || "{}";
|
|
24210
24841
|
try {
|
|
24211
|
-
wx(typeof p == "string" ? JSON.parse(p) : p,
|
|
24842
|
+
wx(typeof p == "string" ? JSON.parse(p) : p, j);
|
|
24212
24843
|
} catch {}
|
|
24213
24844
|
let _ = {};
|
|
24214
24845
|
try {
|
|
@@ -24227,7 +24858,7 @@ gx.get("/", async (e) => {
|
|
|
24227
24858
|
..._,
|
|
24228
24859
|
...v
|
|
24229
24860
|
}), x = !1;
|
|
24230
|
-
if (o !== void 0 && o.trim() !== (e?.title || "Untitled") && (x = !0), s !== void 0 && ie !== e?.slug && (x = !0), c !== void 0 &&
|
|
24861
|
+
if (o !== void 0 && o.trim() !== (e?.title || "Untitled") && (x = !0), s !== void 0 && ie !== e?.slug && (x = !0), c !== void 0 && D !== e?.language && (x = !0), m !== void 0 && d !== e?.startShowingAt && (x = !0), h !== void 0 && f !== e?.stopShowingAt && (x = !0), !x && Object.keys(b).length > 0) {
|
|
24231
24862
|
for (let e of Object.keys(b)) if (JSON.stringify(b[e]) !== JSON.stringify(_[e])) {
|
|
24232
24863
|
x = !0;
|
|
24233
24864
|
break;
|
|
@@ -24249,41 +24880,41 @@ gx.get("/", async (e) => {
|
|
|
24249
24880
|
}
|
|
24250
24881
|
}
|
|
24251
24882
|
}
|
|
24252
|
-
|
|
24883
|
+
ne = e?.status === "published" || e?.publishedAt ? "published" : "draft";
|
|
24253
24884
|
let S = e?.hasUnpublishedChanges === 1 || e?.hasUnpublishedChanges === !0;
|
|
24254
24885
|
re = x ? 1 : +!!S;
|
|
24255
|
-
let C = e?.publishedAt != null || e?.status === "published",
|
|
24256
|
-
await t.prepare("\n UPDATE content_nodes \n SET title = ?, slug = ?, language = ?, contentType = ?, isHidden = ?, startShowingAt = ?, stopShowingAt = ?, status = ?, draftDataJson = ?, hasUnpublishedChanges = ?, updatedById = ?, updatedAt = CURRENT_TIMESTAMP\n WHERE id = ?\n ").run(
|
|
24886
|
+
let C = e?.publishedAt != null || e?.status === "published", O = C ? e.title : n, ee = C ? e.slug : r, k = C ? e.contentType : i, A = C ? e.language : l, ae = C ? e.isHidden : u, oe = C ? e.startShowingAt : d, se = C ? e.stopShowingAt : f;
|
|
24887
|
+
await t.prepare("\n UPDATE content_nodes \n SET title = ?, slug = ?, language = ?, contentType = ?, isHidden = ?, startShowingAt = ?, stopShowingAt = ?, status = ?, draftDataJson = ?, hasUnpublishedChanges = ?, updatedById = ?, updatedAt = CURRENT_TIMESTAMP\n WHERE id = ?\n ").run(O, ee, A, k, ae, oe, se, ne, y, re, E, a);
|
|
24257
24888
|
} else {
|
|
24258
|
-
|
|
24889
|
+
te = !0;
|
|
24259
24890
|
let e = m === void 0 ? null : m, n = h === void 0 ? null : h, r = {
|
|
24260
24891
|
title: o || "Untitled",
|
|
24261
24892
|
slug: ie,
|
|
24262
24893
|
contentType: T,
|
|
24263
|
-
language:
|
|
24894
|
+
language: D,
|
|
24264
24895
|
isHidden: w,
|
|
24265
24896
|
startShowingAt: e,
|
|
24266
24897
|
stopShowingAt: n,
|
|
24267
24898
|
...b
|
|
24268
|
-
}, i = await t.prepare("\n INSERT INTO content_nodes (contentType, title, slug, language, isHidden, startShowingAt, stopShowingAt, status, draftDataJson, dataJson, hasUnpublishedChanges, createdById, updatedById)\n VALUES (?, ?, ?, ?, ?, ?, ?, 'draft', ?, NULL, 0, ?, ?)\n ").run(T, o || "Untitled", ie,
|
|
24269
|
-
|
|
24899
|
+
}, i = await t.prepare("\n INSERT INTO content_nodes (contentType, title, slug, language, isHidden, startShowingAt, stopShowingAt, status, draftDataJson, dataJson, hasUnpublishedChanges, createdById, updatedById)\n VALUES (?, ?, ?, ?, ?, ?, ?, 'draft', ?, NULL, 0, ?, ?)\n ").run(T, o || "Untitled", ie, D, w, e, n, JSON.stringify(r), E, E);
|
|
24900
|
+
A = Number(i.lastInsertRowid);
|
|
24270
24901
|
}
|
|
24271
|
-
if (_ !== void 0 && Array.isArray(_) &&
|
|
24272
|
-
await t.prepare("DELETE FROM node_channels WHERE nodeId = ?").run(
|
|
24902
|
+
if (_ !== void 0 && Array.isArray(_) && A) {
|
|
24903
|
+
await t.prepare("DELETE FROM node_channels WHERE nodeId = ?").run(A);
|
|
24273
24904
|
let e = [...new Set(_.map((e) => typeof e == "object" && e ? e.id || e.channelId : e))].filter((e) => e && e !== "all").map((e) => Number(e) || e);
|
|
24274
24905
|
if (e.length > 0) {
|
|
24275
|
-
let n = e.map(() => "(?, ?)").join(", "), r = e.flatMap((e) => [
|
|
24906
|
+
let n = e.map(() => "(?, ?)").join(", "), r = e.flatMap((e) => [A, e]);
|
|
24276
24907
|
await t.prepare(`INSERT OR IGNORE INTO node_channels (nodeId, channelId) VALUES ${n}`).run(...r);
|
|
24277
24908
|
}
|
|
24278
24909
|
}
|
|
24279
|
-
if (v !== void 0 && Array.isArray(v) && v.length > 0 &&
|
|
24910
|
+
if (v !== void 0 && Array.isArray(v) && v.length > 0 && A) for (let e of v) {
|
|
24280
24911
|
if (!e || !e.treeId) continue;
|
|
24281
|
-
let n = Number(e.treeId) || e.treeId, r = Sx(e.parentId ?? e._draftParentId ?? null), i = typeof e.sortOrder == "number" ? e.sortOrder : 0, a = await t.prepare("SELECT contentId, parentId, sortOrder FROM tree_nodes WHERE treeId = ? AND contentId = ?").get(n,
|
|
24282
|
-
a ? ((a.parentId !== r || a.sortOrder !== i) && (
|
|
24912
|
+
let n = Number(e.treeId) || e.treeId, r = Sx(e.parentId ?? e._draftParentId ?? null), i = typeof e.sortOrder == "number" ? e.sortOrder : 0, a = await t.prepare("SELECT contentId, parentId, sortOrder FROM tree_nodes WHERE treeId = ? AND contentId = ?").get(n, A);
|
|
24913
|
+
a ? ((a.parentId !== r || a.sortOrder !== i) && (te = !0), await t.prepare("UPDATE tree_nodes SET parentId = ?, sortOrder = ? WHERE treeId = ? AND contentId = ?").run(r, i, n, A)) : (te = !0, await t.prepare("INSERT INTO tree_nodes (treeId, contentId, parentId, sortOrder) VALUES (?, ?, ?, ?)").run(n, A, r, i));
|
|
24283
24914
|
}
|
|
24284
24915
|
let ae = [], oe = [], se = [];
|
|
24285
|
-
if (g !== void 0 && Array.isArray(g) &&
|
|
24286
|
-
await t.prepare("DELETE FROM content_blocks WHERE contentId = ? AND isDraft = 1").run(
|
|
24916
|
+
if (g !== void 0 && Array.isArray(g) && A) {
|
|
24917
|
+
await t.prepare("DELETE FROM content_blocks WHERE contentId = ? AND isDraft = 1").run(A);
|
|
24287
24918
|
let e = [], n = [];
|
|
24288
24919
|
for (let t = 0; t < g.length; t++) {
|
|
24289
24920
|
let r = g[t], i = r.componentId || r.elementType || "text-block", a = r.data || {}, o = String(r.blockId || a.blockId || r.instanceId || r.id || `block-${Date.now()}`), { cleanedData: s, assetRefs: c, termRefs: l, nodeRefs: u } = ax({
|
|
@@ -24302,14 +24933,14 @@ gx.get("/", async (e) => {
|
|
|
24302
24933
|
fieldKey: `blocks[${t}].${e.fieldKey}`
|
|
24303
24934
|
}));
|
|
24304
24935
|
let d = r.region !== void 0 && r.region !== null && String(r.region).trim() !== "" ? String(r.region) : "content";
|
|
24305
|
-
e.push("(?, ?, ?, ?, ?, 1)"), n.push(
|
|
24936
|
+
e.push("(?, ?, ?, ?, ?, 1)"), n.push(A, t, i, JSON.stringify(s), d);
|
|
24306
24937
|
}
|
|
24307
24938
|
e.length > 0 && await t.prepare(`INSERT INTO content_blocks (contentId, sortOrder, elementType, dataJson, region, isDraft) VALUES ${e.join(", ")}`).run(...n);
|
|
24308
24939
|
}
|
|
24309
|
-
if (
|
|
24940
|
+
if (A) {
|
|
24310
24941
|
let n = [...x, ...ae], r = [...S, ...oe], i = [...C, ...se];
|
|
24311
|
-
await ox(t,
|
|
24312
|
-
let a = new Set(n.map((e) => e.assetId)), o = new Set([...
|
|
24942
|
+
await ox(t, A, n), await sx(t, A, r), await cx(t, A, i);
|
|
24943
|
+
let a = new Set(n.map((e) => e.assetId)), o = new Set([...j].filter((e) => !a.has(e)));
|
|
24313
24944
|
if (o.size > 0) {
|
|
24314
24945
|
let { storage: n } = ix(e.env);
|
|
24315
24946
|
await Ex(t, n, o);
|
|
@@ -24317,10 +24948,10 @@ gx.get("/", async (e) => {
|
|
|
24317
24948
|
}
|
|
24318
24949
|
return await $b(e).clear(), e.json({
|
|
24319
24950
|
success: !0,
|
|
24320
|
-
id:
|
|
24321
|
-
status:
|
|
24322
|
-
hasUnpublishedChanges: re === 1 ||
|
|
24323
|
-
isStructuralChange:
|
|
24951
|
+
id: A,
|
|
24952
|
+
status: ne,
|
|
24953
|
+
hasUnpublishedChanges: re === 1 || ne === "draft",
|
|
24954
|
+
isStructuralChange: te
|
|
24324
24955
|
});
|
|
24325
24956
|
}), gx.post("/publish", async (e) => {
|
|
24326
24957
|
let t = e.get("db"), n = await e.req.json(), r = n.id || n.nodeId;
|
|
@@ -24335,34 +24966,34 @@ gx.get("/", async (e) => {
|
|
|
24335
24966
|
try {
|
|
24336
24967
|
c = typeof o.draftDataJson == "string" ? JSON.parse(o.draftDataJson) : o.draftDataJson || {};
|
|
24337
24968
|
} catch {}
|
|
24338
|
-
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 = s.startShowingAt ?? o.startShowingAt ?? "", g = c.startShowingAt ?? n.startShowingAt ?? o.startShowingAt ?? "", _ = s.stopShowingAt ?? o.stopShowingAt ?? "", v = c.stopShowingAt ?? n.stopShowingAt ?? o.stopShowingAt ?? "", y = l !== "" && u !== "" && l !== u || d !== "" && f !== "" && d !== f || p !== "" && m !== "" && p !== m || h !== g || _ !== v, b = o.draftDataJson || o.dataJson || "{}", x = c.title ?? n.title ?? o.title ?? "Untitled", S = c.slug ?? n.slug ?? o.slug ?? null, C = c.language === void 0 ? o.language : c.language, w = c.contentType ?? o.contentType ?? "page", T = c.isHidden === void 0 ? o.isHidden : c.isHidden,
|
|
24339
|
-
await t.prepare("\n UPDATE content_nodes\n SET title = ?, slug = ?, language = ?, contentType = ?, isHidden = ?, startShowingAt = ?, stopShowingAt = ?, publishedDataJson = ?, dataJson = ?, publishedAt = CURRENT_TIMESTAMP, status = 'published', hasUnpublishedChanges = 0, updatedById = ?, updatedAt = CURRENT_TIMESTAMP\n WHERE id = ?\n ").run(x, S, C, w, T,
|
|
24340
|
-
let
|
|
24341
|
-
if (
|
|
24969
|
+
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 = s.startShowingAt ?? o.startShowingAt ?? "", g = c.startShowingAt ?? n.startShowingAt ?? o.startShowingAt ?? "", _ = s.stopShowingAt ?? o.stopShowingAt ?? "", v = c.stopShowingAt ?? n.stopShowingAt ?? o.stopShowingAt ?? "", y = l !== "" && u !== "" && l !== u || d !== "" && f !== "" && d !== f || p !== "" && m !== "" && p !== m || h !== g || _ !== v, b = o.draftDataJson || o.dataJson || "{}", x = c.title ?? n.title ?? o.title ?? "Untitled", S = c.slug ?? n.slug ?? o.slug ?? null, C = c.language === void 0 ? o.language : c.language, w = c.contentType ?? o.contentType ?? "page", T = c.isHidden === void 0 ? o.isHidden : c.isHidden, E = c.startShowingAt === void 0 ? n.startShowingAt === void 0 ? o.startShowingAt : n.startShowingAt : c.startShowingAt, D = c.stopShowingAt === void 0 ? n.stopShowingAt === void 0 ? o.stopShowingAt : n.stopShowingAt : c.stopShowingAt;
|
|
24970
|
+
await t.prepare("\n UPDATE content_nodes\n SET title = ?, slug = ?, language = ?, contentType = ?, isHidden = ?, startShowingAt = ?, stopShowingAt = ?, publishedDataJson = ?, dataJson = ?, publishedAt = CURRENT_TIMESTAMP, status = 'published', hasUnpublishedChanges = 0, updatedById = ?, updatedAt = CURRENT_TIMESTAMP\n WHERE id = ?\n ").run(x, S, C, w, T, E, D, b, b, a, i), await t.prepare("DELETE FROM content_blocks WHERE contentId = ? AND isDraft = 0").run(i);
|
|
24971
|
+
let O = await t.prepare("SELECT * FROM content_blocks WHERE contentId = ? AND isDraft = 1 ORDER BY sortOrder ASC").all(i), ee = Array.isArray(O) ? O : O?.results || [];
|
|
24972
|
+
if (ee.length > 0) {
|
|
24342
24973
|
let e = [], n = [];
|
|
24343
|
-
for (let t of
|
|
24974
|
+
for (let t of ee) {
|
|
24344
24975
|
let r = t.region !== void 0 && t.region !== null && String(t.region).trim() !== "" ? String(t.region) : "content";
|
|
24345
24976
|
e.push("(?, ?, ?, ?, ?, 0)"), n.push(i, t.sortOrder, t.elementType, t.dataJson, r);
|
|
24346
24977
|
}
|
|
24347
24978
|
await t.prepare(`INSERT INTO content_blocks (contentId, sortOrder, elementType, dataJson, region, isDraft) VALUES ${e.join(", ")}`).run(...n);
|
|
24348
24979
|
}
|
|
24349
|
-
let
|
|
24350
|
-
version:
|
|
24980
|
+
let k = ((await t.prepare("SELECT COUNT(*) as count FROM node_revisions WHERE nodeId = ?").get(i))?.count || 0) + 1, A = {
|
|
24981
|
+
version: k,
|
|
24351
24982
|
publishedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
24352
24983
|
node: {
|
|
24353
24984
|
...o,
|
|
24354
24985
|
dataJson: b
|
|
24355
24986
|
},
|
|
24356
|
-
blocks:
|
|
24987
|
+
blocks: ee
|
|
24357
24988
|
};
|
|
24358
|
-
await t.prepare("INSERT INTO node_revisions (nodeId, version, snapshotJson, createdById) VALUES (?, ?, ?, ?)").run(i,
|
|
24359
|
-
let
|
|
24360
|
-
return y ? _x(e, t, [i]) :
|
|
24989
|
+
await t.prepare("INSERT INTO node_revisions (nodeId, version, snapshotJson, createdById) VALUES (?, ?, ?, ?)").run(i, k, JSON.stringify(A), a), await $b(e).clear();
|
|
24990
|
+
let j = new mx(e.env);
|
|
24991
|
+
return y ? _x(e, t, [i]) : j.purgeNode(e, t, i, !1), e.json({
|
|
24361
24992
|
success: !0,
|
|
24362
24993
|
id: i,
|
|
24363
24994
|
status: "published",
|
|
24364
|
-
version:
|
|
24365
|
-
publishedAt:
|
|
24995
|
+
version: k,
|
|
24996
|
+
publishedAt: A.publishedAt,
|
|
24366
24997
|
hasUnpublishedChanges: !1,
|
|
24367
24998
|
isStructuralChange: y
|
|
24368
24999
|
});
|
|
@@ -24385,27 +25016,27 @@ gx.get("/", async (e) => {
|
|
|
24385
25016
|
} catch {}
|
|
24386
25017
|
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(), g = c.startShowingAt ?? s.startShowingAt ?? "", _ = l.startShowingAt ?? n.startShowingAt ?? s.startShowingAt ?? "", v = c.stopShowingAt ?? s.stopShowingAt ?? "", y = l.stopShowingAt ?? n.stopShowingAt ?? s.stopShowingAt ?? "";
|
|
24387
25018
|
(u !== "" && d !== "" && u !== d || f !== "" && p !== "" && f !== p || m !== "" && h !== "" && m !== h || g !== _ || v !== y) && (a = !0);
|
|
24388
|
-
let b = s.draftDataJson || s.dataJson || "{}", x = l.title ?? n.title ?? s.title ?? "Untitled", S = l.slug ?? n.slug ?? s.slug ?? null, C = l.language === void 0 ? s.language : l.language, w = l.contentType ?? s.contentType ?? "page", T = l.isHidden === void 0 ? s.isHidden : l.isHidden,
|
|
24389
|
-
await t.prepare("\n UPDATE content_nodes\n SET title = ?, slug = ?, language = ?, contentType = ?, isHidden = ?, startShowingAt = ?, stopShowingAt = ?, publishedDataJson = ?, dataJson = ?, publishedAt = CURRENT_TIMESTAMP, status = 'published', hasUnpublishedChanges = 0, updatedById = ?, updatedAt = CURRENT_TIMESTAMP\n WHERE id = ?\n ").run(x, S, C, w, T,
|
|
24390
|
-
let
|
|
24391
|
-
if (
|
|
25019
|
+
let b = s.draftDataJson || s.dataJson || "{}", x = l.title ?? n.title ?? s.title ?? "Untitled", S = l.slug ?? n.slug ?? s.slug ?? null, C = l.language === void 0 ? s.language : l.language, w = l.contentType ?? s.contentType ?? "page", T = l.isHidden === void 0 ? s.isHidden : l.isHidden, E = l.startShowingAt === void 0 ? n.startShowingAt === void 0 ? s.startShowingAt : n.startShowingAt : l.startShowingAt, D = l.stopShowingAt === void 0 ? n.stopShowingAt === void 0 ? s.stopShowingAt : n.stopShowingAt : l.stopShowingAt;
|
|
25020
|
+
await t.prepare("\n UPDATE content_nodes\n SET title = ?, slug = ?, language = ?, contentType = ?, isHidden = ?, startShowingAt = ?, stopShowingAt = ?, publishedDataJson = ?, dataJson = ?, publishedAt = CURRENT_TIMESTAMP, status = 'published', hasUnpublishedChanges = 0, updatedById = ?, updatedAt = CURRENT_TIMESTAMP\n WHERE id = ?\n ").run(x, S, C, w, T, E, D, b, b, i, r), await t.prepare("DELETE FROM content_blocks WHERE contentId = ? AND isDraft = 0").run(r);
|
|
25021
|
+
let O = await t.prepare("SELECT * FROM content_blocks WHERE contentId = ? AND isDraft = 1 ORDER BY sortOrder ASC").all(r), ee = Array.isArray(O) ? O : O?.results || [];
|
|
25022
|
+
if (ee.length > 0) {
|
|
24392
25023
|
let e = [], n = [];
|
|
24393
|
-
for (let t of
|
|
25024
|
+
for (let t of ee) {
|
|
24394
25025
|
let i = t.region !== void 0 && t.region !== null && String(t.region).trim() !== "" ? String(t.region) : "content";
|
|
24395
25026
|
e.push("(?, ?, ?, ?, ?, 0)"), n.push(r, t.sortOrder, t.elementType, t.dataJson, i);
|
|
24396
25027
|
}
|
|
24397
25028
|
await t.prepare(`INSERT INTO content_blocks (contentId, sortOrder, elementType, dataJson, region, isDraft) VALUES ${e.join(", ")}`).run(...n);
|
|
24398
25029
|
}
|
|
24399
|
-
let
|
|
24400
|
-
version:
|
|
25030
|
+
let k = ((await t.prepare("SELECT COUNT(*) as count FROM node_revisions WHERE nodeId = ?").get(r))?.count || 0) + 1, A = {
|
|
25031
|
+
version: k,
|
|
24401
25032
|
publishedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
24402
25033
|
node: {
|
|
24403
25034
|
...s,
|
|
24404
25035
|
dataJson: b
|
|
24405
25036
|
},
|
|
24406
|
-
blocks:
|
|
25037
|
+
blocks: ee
|
|
24407
25038
|
};
|
|
24408
|
-
await t.prepare("INSERT INTO node_revisions (nodeId, version, snapshotJson, createdById) VALUES (?, ?, ?, ?)").run(r,
|
|
25039
|
+
await t.prepare("INSERT INTO node_revisions (nodeId, version, snapshotJson, createdById) VALUES (?, ?, ?, ?)").run(r, k, JSON.stringify(A), i), o.push(r);
|
|
24409
25040
|
}
|
|
24410
25041
|
await $b(e).clear();
|
|
24411
25042
|
let s = new mx(e.env);
|
|
@@ -24889,23 +25520,23 @@ Mx.get("/", async (e) => {
|
|
|
24889
25520
|
try {
|
|
24890
25521
|
let t = e.get("db"), n = await e.req.json(), r = n.channel || n.data || n, i = r.id, a = i != null && i !== "" && !isNaN(Number(i)) ? Number(i) : null, { key: o, label: s, channelType: c = "website", domain: l = "localhost", baseUrl: u = "http://localhost:4321", defaultLanguage: d, default_language: f, language: p, isHidden: m, hidden: h, trees: g = [], createdById: _ = null, updatedById: v = null, id: y, createdAt: b, updatedAt: x, ...S } = r, C = o?.trim() || "main", w = s?.trim() || "Untitled Channel", T = d || f || p || "";
|
|
24891
25522
|
typeof T == "object" && T && (T = T.value || T.id || ""), T = String(T).trim();
|
|
24892
|
-
let
|
|
25523
|
+
let E = m === !0 || m === "true" || m === 1 || h === !0 || h === "true" || h === 1, D = Array.isArray(g) ? g : [], O = JSON.stringify(S || {}), ee = e.get("user")?.id || v || _ || null;
|
|
24893
25524
|
if (await t.prepare("SELECT id FROM channels WHERE key = ? AND id != ? LIMIT 1").get(C, a ?? -1)) return e.json({
|
|
24894
25525
|
error: `Channel API key "${C}" is already in use.`,
|
|
24895
25526
|
field: "key"
|
|
24896
25527
|
}, 409);
|
|
24897
|
-
let
|
|
24898
|
-
if (a) await t.prepare("\n UPDATE channels \n SET key = ?, label = ?, channelType = ?, domain = ?, baseUrl = ?, defaultLanguage = ?, \n isHidden = ?, dataJson = ?, updatedById = ?, updatedAt = CURRENT_TIMESTAMP\n WHERE id = ?\n ").run(C, w, c, l, u, T, +!!
|
|
25528
|
+
let k = a;
|
|
25529
|
+
if (a) await t.prepare("\n UPDATE channels \n SET key = ?, label = ?, channelType = ?, domain = ?, baseUrl = ?, defaultLanguage = ?, \n isHidden = ?, dataJson = ?, updatedById = ?, updatedAt = CURRENT_TIMESTAMP\n WHERE id = ?\n ").run(C, w, c, l, u, T, +!!E, O, ee, a);
|
|
24899
25530
|
else {
|
|
24900
|
-
let e = await t.prepare("\n INSERT INTO channels (key, label, channelType, domain, baseUrl, defaultLanguage, isHidden, dataJson, createdById, updatedById)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n RETURNING id\n ").get(C, w, c, l, u, T, +!!
|
|
25531
|
+
let e = await t.prepare("\n INSERT INTO channels (key, label, channelType, domain, baseUrl, defaultLanguage, isHidden, dataJson, createdById, updatedById)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n RETURNING id\n ").get(C, w, c, l, u, T, +!!E, O, ee, ee), n = e?.results?.[0] || e;
|
|
24901
25532
|
if (!n || !n.id) throw Error("Failed to retrieve newly created Channel ID from Cloudflare D1.");
|
|
24902
|
-
|
|
25533
|
+
k = Number(n.id);
|
|
24903
25534
|
}
|
|
24904
|
-
await t.prepare("DELETE FROM channel_trees WHERE channelId = ?").run(
|
|
24905
|
-
let
|
|
24906
|
-
if (
|
|
24907
|
-
let e =
|
|
24908
|
-
|
|
25535
|
+
await t.prepare("DELETE FROM channel_trees WHERE channelId = ?").run(k);
|
|
25536
|
+
let A = D.filter((e) => e && e.treeId && e.key);
|
|
25537
|
+
if (A.length > 0) {
|
|
25538
|
+
let e = A.map(() => "(?, ?, ?, ?)").join(", "), n = A.flatMap((e) => [
|
|
25539
|
+
k,
|
|
24909
25540
|
Number(e.treeId) || e.treeId,
|
|
24910
25541
|
String(e.key).trim(),
|
|
24911
25542
|
JSON.stringify(e.meta || {})
|
|
@@ -24915,10 +25546,10 @@ Mx.get("/", async (e) => {
|
|
|
24915
25546
|
VALUES ${e}
|
|
24916
25547
|
`).run(...n);
|
|
24917
25548
|
}
|
|
24918
|
-
let
|
|
24919
|
-
return await
|
|
25549
|
+
let j = $b(e);
|
|
25550
|
+
return await j.delete(`channel:${C}`), await j.delete(`channel:${k}`), await j.clear(), await hx(t), new mx(e.env).purgeGlobalCache(e, t), e.json({
|
|
24920
25551
|
success: !0,
|
|
24921
|
-
id:
|
|
25552
|
+
id: k
|
|
24922
25553
|
});
|
|
24923
25554
|
} catch (t) {
|
|
24924
25555
|
return console.error("[API Channels] Error saving channel:", t), e.json({
|
|
@@ -25273,16 +25904,16 @@ function Qx(e) {
|
|
|
25273
25904
|
userTemplate: null,
|
|
25274
25905
|
treeExposedFields: ["summary"]
|
|
25275
25906
|
};
|
|
25276
|
-
let { rawNodes: t = {}, rawTrees: n = {}, rawChannels: r = {}, channels: i = {}, rawTaxonomies: a = {}, taxonomies: o = {}, rawBlocks: s = {}, rawElements: c = {}, rawNodeLayouts: l = {}, rawBlockLayouts: u = {}, rawLayouts: d = {}, rawFieldSets: f = {}, rawTemplates: p = {}, nodeTemplate: m = null, treeTemplate: h = null, channelTemplate: g = null, userTemplate: _ = null, nodes: v = {}, trees: y = {}, blocks: b = {}, nodeLayouts: x = {}, blockLayouts: S = {} } = e, C = Object.keys(t).length > 0 ? t : v, w = Object.keys(n).length > 0 ? n : y, T = Object.keys(r).length > 0 ? r : i,
|
|
25907
|
+
let { rawNodes: t = {}, rawTrees: n = {}, rawChannels: r = {}, channels: i = {}, rawTaxonomies: a = {}, taxonomies: o = {}, rawBlocks: s = {}, rawElements: c = {}, rawNodeLayouts: l = {}, rawBlockLayouts: u = {}, rawLayouts: d = {}, rawFieldSets: f = {}, rawTemplates: p = {}, nodeTemplate: m = null, treeTemplate: h = null, channelTemplate: g = null, userTemplate: _ = null, nodes: v = {}, trees: y = {}, blocks: b = {}, nodeLayouts: x = {}, blockLayouts: S = {} } = e, C = Object.keys(t).length > 0 ? t : v, w = Object.keys(n).length > 0 ? n : y, T = Object.keys(r).length > 0 ? r : i, E = Object.keys(a).length > 0 ? a : o, D = Object.keys(s).length > 0 ? s : Object.keys(c).length > 0 ? c : b, O = Object.keys(l).length > 0 ? l : Object.keys(d).length > 0 ? d : x, ee = Object.keys(u).length > 0 ? u : S, k = m?.fields || {}, A = {
|
|
25277
25908
|
...p,
|
|
25278
25909
|
...f
|
|
25279
|
-
},
|
|
25910
|
+
}, j = (e, t = "settings", n, r) => {
|
|
25280
25911
|
let i = {};
|
|
25281
25912
|
if (!e) return i;
|
|
25282
25913
|
let a = (e) => {
|
|
25283
|
-
let a =
|
|
25914
|
+
let a = A[e] || A[`${e}-base`] || {};
|
|
25284
25915
|
r && typeof a == "object" && a && (r.inTree === void 0 && a.inTree !== void 0 && (r.inTree = a.inTree), r.inVault === void 0 && a.inVault !== void 0 && (r.inVault = a.inVault), r.hasCanvas === void 0 && a.hasCanvas !== void 0 && (r.hasCanvas = a.hasCanvas));
|
|
25285
|
-
let o = a.fields || a, s =
|
|
25916
|
+
let o = a.fields || a, s = j(o, t, n, r);
|
|
25286
25917
|
if (a.tab && n) {
|
|
25287
25918
|
let t = a.tab.id || e, r = a.tab.label || a.label || t;
|
|
25288
25919
|
n[t] || (n[t] = {
|
|
@@ -25303,14 +25934,14 @@ function Qx(e) {
|
|
|
25303
25934
|
a(String(t));
|
|
25304
25935
|
return;
|
|
25305
25936
|
}
|
|
25306
|
-
let n = i[e] ||
|
|
25937
|
+
let n = i[e] || k[e] || {};
|
|
25307
25938
|
i[e] = Ux(n, typeof t == "object" && t ? t : { label: String(t) });
|
|
25308
25939
|
}), i) : (Array.isArray(e) && e.forEach((e) => {
|
|
25309
25940
|
if (typeof e == "string") {
|
|
25310
25941
|
if (e.includes("/") || e.endsWith(".yaml") || e.endsWith(".yml")) return;
|
|
25311
25942
|
if (e.startsWith("fieldSet:")) a(e.replace("fieldSet:", "").trim());
|
|
25312
25943
|
else {
|
|
25313
|
-
let t = i[e] ||
|
|
25944
|
+
let t = i[e] || k[e] || {};
|
|
25314
25945
|
i[e] = Ux(t, {
|
|
25315
25946
|
type: "text",
|
|
25316
25947
|
label: e
|
|
@@ -25319,23 +25950,23 @@ function Qx(e) {
|
|
|
25319
25950
|
} else typeof e == "object" && e && Object.entries(e).forEach(([e, t]) => {
|
|
25320
25951
|
if (e === "fieldSet") a(String(t));
|
|
25321
25952
|
else if (e !== "<<" && e !== "<<:") {
|
|
25322
|
-
let n = i[e] ||
|
|
25953
|
+
let n = i[e] || k[e] || {};
|
|
25323
25954
|
i[e] = Ux(n, typeof t == "object" && t ? t : {});
|
|
25324
25955
|
}
|
|
25325
25956
|
});
|
|
25326
25957
|
}), i);
|
|
25327
|
-
},
|
|
25958
|
+
}, te = (e, t) => {
|
|
25328
25959
|
let n = {};
|
|
25329
25960
|
return !e || typeof e != "object" ? n : Array.isArray(e) ? (e.forEach((e) => {
|
|
25330
25961
|
if (typeof e == "object" && e.fieldSet) {
|
|
25331
|
-
let r = String(e.fieldSet), i =
|
|
25962
|
+
let r = String(e.fieldSet), i = A[r] || A[`${r}-base`] || {};
|
|
25332
25963
|
t && (t.inTree === void 0 && i.inTree !== void 0 && (t.inTree = i.inTree), t.inVault === void 0 && i.inVault !== void 0 && (t.inVault = i.inVault), t.hasCanvas === void 0 && i.hasCanvas !== void 0 && (t.hasCanvas = i.hasCanvas));
|
|
25333
25964
|
let a = i.tab?.id || r, o = i.tab?.label || i.label || a;
|
|
25334
25965
|
n[a] || (n[a] = {
|
|
25335
25966
|
label: o,
|
|
25336
25967
|
fields: {}
|
|
25337
25968
|
});
|
|
25338
|
-
let s =
|
|
25969
|
+
let s = j(i.fields || i, a, n, t);
|
|
25339
25970
|
Object.entries(s).forEach(([e, t]) => {
|
|
25340
25971
|
let r = n[a].fields[e] || {};
|
|
25341
25972
|
n[a].fields[e] = Ux(r, t);
|
|
@@ -25350,21 +25981,21 @@ function Qx(e) {
|
|
|
25350
25981
|
label: i,
|
|
25351
25982
|
fields: {}
|
|
25352
25983
|
});
|
|
25353
|
-
let s =
|
|
25984
|
+
let s = j(o, e, n, t);
|
|
25354
25985
|
Object.entries(s).forEach(([t, r]) => {
|
|
25355
25986
|
if (t === "<<" || t === "<<:" || t === "label") return;
|
|
25356
25987
|
let i = n[e].fields[t] || {};
|
|
25357
25988
|
n[e].fields[t] = Ux(i, r);
|
|
25358
25989
|
});
|
|
25359
25990
|
}), n);
|
|
25360
|
-
},
|
|
25991
|
+
}, ne = {};
|
|
25361
25992
|
Object.entries(C).forEach(([e, t]) => {
|
|
25362
25993
|
m && (t.inTree === void 0 && m.inTree !== void 0 && (t.inTree = m.inTree), t.inVault === void 0 && m.inVault !== void 0 && (t.inVault = m.inVault), t.hasCanvas === void 0 && m.hasCanvas !== void 0 && (t.hasCanvas = m.hasCanvas));
|
|
25363
|
-
let n =
|
|
25994
|
+
let n = te(t.tabs, t), r = j(t.fields || [], "settings", n, t);
|
|
25364
25995
|
Array.isArray(t.fieldSets) && t.fieldSets.forEach((e) => {
|
|
25365
|
-
let i =
|
|
25996
|
+
let i = A[e] || A[`${e}-base`] || {};
|
|
25366
25997
|
t.inTree === void 0 && i.inTree !== void 0 && (t.inTree = i.inTree), t.inVault === void 0 && i.inVault !== void 0 && (t.inVault = i.inVault), t.hasCanvas === void 0 && i.hasCanvas !== void 0 && (t.hasCanvas = i.hasCanvas);
|
|
25367
|
-
let a = i.fields || i, o =
|
|
25998
|
+
let a = i.fields || i, o = j(a, "settings", n, t);
|
|
25368
25999
|
if (i.tab) {
|
|
25369
26000
|
let t = i.tab.id || e, r = i.tab.label || i.label || t;
|
|
25370
26001
|
n[t] || (n[t] = {
|
|
@@ -25375,7 +26006,7 @@ function Qx(e) {
|
|
|
25375
26006
|
n[t].fields[e] = Ux(i, r);
|
|
25376
26007
|
});
|
|
25377
26008
|
} else Object.entries(o).forEach(([e, t]) => {
|
|
25378
|
-
let n = r[e] ||
|
|
26009
|
+
let n = r[e] || k[e] || {};
|
|
25379
26010
|
r[e] = Ux(n, t);
|
|
25380
26011
|
});
|
|
25381
26012
|
}), Object.values(n).forEach((e) => {
|
|
@@ -25386,7 +26017,7 @@ function Qx(e) {
|
|
|
25386
26017
|
}), Object.keys(n).length === 0 && Object.keys(r).length > 0 && (n.settings = {
|
|
25387
26018
|
label: t.label || "Settings",
|
|
25388
26019
|
fields: r
|
|
25389
|
-
}),
|
|
26020
|
+
}), ne[e] = {
|
|
25390
26021
|
...t,
|
|
25391
26022
|
id: t.id || e,
|
|
25392
26023
|
label: t.label || e,
|
|
@@ -25402,9 +26033,9 @@ function Qx(e) {
|
|
|
25402
26033
|
});
|
|
25403
26034
|
let re = {};
|
|
25404
26035
|
Object.entries(w).forEach(([e, t]) => {
|
|
25405
|
-
let n =
|
|
26036
|
+
let n = te(t.tabs), r = j(t.fields || [], "settings", n);
|
|
25406
26037
|
Array.isArray(t.fieldSets) && t.fieldSets.forEach((e) => {
|
|
25407
|
-
let t =
|
|
26038
|
+
let t = A[e] || {}, i = t.fields || t, a = j(i, "settings", n);
|
|
25408
26039
|
Object.entries(a).forEach(([e, t]) => {
|
|
25409
26040
|
r[e] = Ux(r[e] || {}, t);
|
|
25410
26041
|
});
|
|
@@ -25422,9 +26053,9 @@ function Qx(e) {
|
|
|
25422
26053
|
});
|
|
25423
26054
|
let ie = {};
|
|
25424
26055
|
Object.entries(T).forEach(([e, t]) => {
|
|
25425
|
-
let n =
|
|
26056
|
+
let n = te(t.tabs), r = j(t.fields || [], "settings", n);
|
|
25426
26057
|
Array.isArray(t.fieldSets) && t.fieldSets.forEach((e) => {
|
|
25427
|
-
let t =
|
|
26058
|
+
let t = A[e] || {}, n = t.fields || t, i = j(n);
|
|
25428
26059
|
Object.entries(i).forEach(([e, t]) => {
|
|
25429
26060
|
r[e] = Ux(r[e] || {}, t);
|
|
25430
26061
|
});
|
|
@@ -25442,10 +26073,10 @@ function Qx(e) {
|
|
|
25442
26073
|
};
|
|
25443
26074
|
});
|
|
25444
26075
|
let ae = {};
|
|
25445
|
-
Object.entries(
|
|
25446
|
-
let n =
|
|
26076
|
+
Object.entries(E).forEach(([e, t]) => {
|
|
26077
|
+
let n = te(t.tabs), r = j(t.fields || [], "settings", n);
|
|
25447
26078
|
Array.isArray(t.fieldSets) && t.fieldSets.forEach((e) => {
|
|
25448
|
-
let t =
|
|
26079
|
+
let t = A[e] || {}, i = t.fields || t, a = j(i, "settings", n);
|
|
25449
26080
|
Object.entries(a).forEach(([e, t]) => {
|
|
25450
26081
|
r[e] = Ux(r[e] || {}, t);
|
|
25451
26082
|
});
|
|
@@ -25463,10 +26094,10 @@ function Qx(e) {
|
|
|
25463
26094
|
};
|
|
25464
26095
|
});
|
|
25465
26096
|
let oe = {};
|
|
25466
|
-
Object.entries(
|
|
25467
|
-
let n =
|
|
26097
|
+
Object.entries(D).forEach(([e, t]) => {
|
|
26098
|
+
let n = j(t.fields || []);
|
|
25468
26099
|
Array.isArray(t.fieldSets) && t.fieldSets.forEach((e) => {
|
|
25469
|
-
let t =
|
|
26100
|
+
let t = A[e] || {}, r = t.fields || t, i = j(r);
|
|
25470
26101
|
Object.entries(i).forEach(([e, t]) => {
|
|
25471
26102
|
n[e] = Ux(n[e] || {}, t);
|
|
25472
26103
|
});
|
|
@@ -25479,8 +26110,8 @@ function Qx(e) {
|
|
|
25479
26110
|
};
|
|
25480
26111
|
});
|
|
25481
26112
|
let se = {};
|
|
25482
|
-
Object.entries(
|
|
25483
|
-
let n =
|
|
26113
|
+
Object.entries(O).forEach(([e, t]) => {
|
|
26114
|
+
let n = te(t.tabs), r = j(t.fields || [], "settings", n), i = {}, a = t.regions || { content: { label: "Content" } };
|
|
25484
26115
|
Object.entries(a).forEach(([e, t]) => {
|
|
25485
26116
|
i[e] = {
|
|
25486
26117
|
...t,
|
|
@@ -25502,8 +26133,8 @@ function Qx(e) {
|
|
|
25502
26133
|
};
|
|
25503
26134
|
});
|
|
25504
26135
|
let ce = {};
|
|
25505
|
-
Object.entries(
|
|
25506
|
-
let n =
|
|
26136
|
+
Object.entries(ee).forEach(([e, t]) => {
|
|
26137
|
+
let n = te(t.tabs), r = j(t.fields || [], "settings", n), i = {}, a = t.regions || { main: { label: "Main Content" } };
|
|
25507
26138
|
Object.entries(a).forEach(([e, t]) => {
|
|
25508
26139
|
i[e] = {
|
|
25509
26140
|
...t,
|
|
@@ -25526,7 +26157,7 @@ function Qx(e) {
|
|
|
25526
26157
|
});
|
|
25527
26158
|
let le = g?.fields || {};
|
|
25528
26159
|
Array.isArray(g?.fieldSets) && g?.fieldSets.forEach((e) => {
|
|
25529
|
-
let t =
|
|
26160
|
+
let t = A[e] || {}, n = t.fields || t, r = j(n);
|
|
25530
26161
|
Object.entries(r).forEach(([e, t]) => {
|
|
25531
26162
|
le[e] = Ux(le[e] || {}, t);
|
|
25532
26163
|
});
|
|
@@ -25536,7 +26167,7 @@ function Qx(e) {
|
|
|
25536
26167
|
fields: le
|
|
25537
26168
|
} : null, de = _?.fields || {};
|
|
25538
26169
|
Array.isArray(_?.fieldSets) && _?.fieldSets.forEach((e) => {
|
|
25539
|
-
let t =
|
|
26170
|
+
let t = A[e] || {}, n = t.fields || t, r = j(n);
|
|
25540
26171
|
Object.entries(r).forEach(([e, t]) => {
|
|
25541
26172
|
de[e] = Ux(de[e] || {}, t);
|
|
25542
26173
|
});
|
|
@@ -25545,23 +26176,23 @@ function Qx(e) {
|
|
|
25545
26176
|
..._,
|
|
25546
26177
|
fields: de
|
|
25547
26178
|
} : null, pe = /* @__PURE__ */ new Set(["summary"]);
|
|
25548
|
-
for (let e of Object.values(
|
|
26179
|
+
for (let e of Object.values(A)) {
|
|
25549
26180
|
let t = e.fields || e;
|
|
25550
26181
|
for (let [e, n] of Object.entries(t || {})) n && typeof n == "object" && n.inTree && pe.add(e);
|
|
25551
26182
|
}
|
|
25552
|
-
for (let e of Object.values(
|
|
26183
|
+
for (let e of Object.values(ne)) {
|
|
25553
26184
|
for (let [t, n] of Object.entries(e.fields || {})) n?.inTree && pe.add(t);
|
|
25554
26185
|
for (let t of Object.values(e.tabs || {})) for (let [e, n] of Object.entries(t.fields || {})) n?.inTree && pe.add(e);
|
|
25555
26186
|
}
|
|
25556
26187
|
return {
|
|
25557
|
-
nodes:
|
|
26188
|
+
nodes: ne,
|
|
25558
26189
|
trees: re,
|
|
25559
26190
|
channels: ie,
|
|
25560
26191
|
taxonomies: ae,
|
|
25561
26192
|
blocks: oe,
|
|
25562
26193
|
nodeLayouts: se,
|
|
25563
26194
|
blockLayouts: ce,
|
|
25564
|
-
fieldSets:
|
|
26195
|
+
fieldSets: A,
|
|
25565
26196
|
nodeTemplate: m || null,
|
|
25566
26197
|
treeTemplate: h || null,
|
|
25567
26198
|
channelTemplate: ue,
|
|
@@ -25731,37 +26362,47 @@ async function sS(e, t, n = []) {
|
|
|
25731
26362
|
if (typeof r.bind == "function") return await r.bind(...n).run();
|
|
25732
26363
|
if (typeof r.run == "function") return await r.run(...n);
|
|
25733
26364
|
}
|
|
25734
|
-
function cS(e
|
|
26365
|
+
function cS(e) {
|
|
26366
|
+
return e.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().trim().replace(/[^a-z0-9\s-]/g, "").replace(/[\s-]+/g, "-").replace(/^-+|-+$/g, "");
|
|
26367
|
+
}
|
|
26368
|
+
function lS(e, t, n) {
|
|
25735
26369
|
let r = e || (t ? `/media/${t}` : "");
|
|
25736
26370
|
return r && n && r.startsWith(`https://${n}/`) && !r.includes("/media/") && (r = r.replace(`https://${n}/`, `https://${n}/media/`)), r;
|
|
25737
26371
|
}
|
|
25738
26372
|
aS.get("/", async (e) => {
|
|
25739
26373
|
try {
|
|
25740
|
-
let t = wb(e), { search: n = "", type: r = "all", page: i = "1", limit: a = "24", sort: o = "createdAt", order: s = "DESC", nodeId: c, channelId: l, trashed: u } = e.req.query(),
|
|
26374
|
+
let t = wb(e), { search: n = "", type: r = "all", page: i = "1", limit: a = "24", sort: o = "createdAt", order: s = "DESC", nodeId: c, channelId: l, trashed: u, tags: d } = e.req.query(), f = Math.max(1, parseInt(i, 10) || 1), p = Math.max(1, Math.min(100, parseInt(a, 10) || 24)), m = (f - 1) * p, h = {
|
|
25741
26375
|
createdAt: "a.createdAt",
|
|
25742
26376
|
updatedAt: "a.updatedAt",
|
|
25743
26377
|
filename: "a.filename",
|
|
25744
26378
|
mimeType: "a.mimeType",
|
|
25745
26379
|
sizeBytes: "a.sizeBytes"
|
|
25746
|
-
}[o] || "a.createdAt",
|
|
26380
|
+
}[o] || "a.createdAt", g = s.toUpperCase() === "ASC" ? "ASC" : "DESC", _ = [], v = ["(a.isSystemVariant = 0 OR a.isSystemVariant IS NULL)", u === "true" || u === "1" ? "(a.deletedAt IS NOT NULL AND a.deletedAt != '')" : "(a.deletedAt IS NULL OR a.deletedAt = '')"];
|
|
25747
26381
|
if (c) {
|
|
25748
26382
|
let e = await oS(t, "SELECT a.id, a.filename, a.isSystemVariant FROM node_assets na JOIN assets a ON na.assetId = a.id WHERE na.nodeId = ?", [Number(c)]);
|
|
25749
|
-
if (e.length === 0)
|
|
26383
|
+
if (e.length === 0) v.push("1 = 0");
|
|
25750
26384
|
else {
|
|
25751
26385
|
let t = e.map((e) => e.isSystemVariant ? `(a.id = '${e.id}' OR a.id IN (SELECT parentAssetId FROM assets WHERE id = '${e.id}'))` : `a.id = '${e.id}'`).join(" OR ");
|
|
25752
|
-
|
|
26386
|
+
v.push(`(${t})`);
|
|
25753
26387
|
}
|
|
25754
26388
|
}
|
|
25755
26389
|
if (!c && l && l !== "all") {
|
|
25756
26390
|
let e = Number(l) || l;
|
|
25757
|
-
|
|
25758
|
-
}
|
|
25759
|
-
|
|
25760
|
-
|
|
25761
|
-
|
|
25762
|
-
|
|
25763
|
-
|
|
25764
|
-
|
|
26391
|
+
v.push("(EXISTS (SELECT 1 FROM node_assets na_ch INNER JOIN node_channels nc_ch ON na_ch.nodeId = nc_ch.nodeId WHERE na_ch.assetId = a.id AND nc_ch.channelId = ?) OR NOT EXISTS (SELECT 1 FROM node_assets na_unused WHERE na_unused.assetId = a.id))"), _.push(e);
|
|
26392
|
+
}
|
|
26393
|
+
if (d) {
|
|
26394
|
+
let e = d.split(",").map((e) => Number(e)).filter((e) => !isNaN(e));
|
|
26395
|
+
if (e.length > 0) {
|
|
26396
|
+
let t = e.map(() => "?").join(",");
|
|
26397
|
+
v.push(`EXISTS (SELECT 1 FROM asset_terms at WHERE at.assetId = a.id AND at.termId IN (${t}))`), _.push(...e);
|
|
26398
|
+
}
|
|
26399
|
+
}
|
|
26400
|
+
n && n.trim() !== "" && (v.push("a.filename LIKE ?"), _.push(`%${n.trim()}%`)), r && r !== "all" && (r === "image" ? (v.push("a.mimeType LIKE ?"), _.push("image/%")) : r === "document" ? (v.push("(a.mimeType LIKE ? OR a.mimeType LIKE ? OR a.mimeType LIKE ?)"), _.push("application/pdf%", "application/msword%", "application/vnd%")) : r === "video" && (v.push("(a.mimeType LIKE ? OR a.mimeType LIKE ?)"), _.push("video/%", "audio/%")));
|
|
26401
|
+
let y = `SELECT a.id, a.filename, a.mimeType, a.sizeBytes, a.cdnUrl, a.storageKeyPrivate, a.createdAt, a.updatedAt, a.deletedAt, a.dataJson FROM assets a ${` WHERE ${v.join(" AND ")}`} ORDER BY ${h} ${g} LIMIT ? OFFSET ?`;
|
|
26402
|
+
_.push(p, m);
|
|
26403
|
+
let b = await oS(t, y, _), x = b.map((e) => e.id), S = /* @__PURE__ */ new Map(), C = /* @__PURE__ */ new Map();
|
|
26404
|
+
if (x.length > 0) {
|
|
26405
|
+
let e = x.map(() => "?").join(",");
|
|
25765
26406
|
(await oS(t, `
|
|
25766
26407
|
SELECT master.id AS assetId, COUNT(DISTINCT na.nodeId) AS count
|
|
25767
26408
|
FROM assets master
|
|
@@ -25770,13 +26411,13 @@ aS.get("/", async (e) => {
|
|
|
25770
26411
|
EXISTS (SELECT 1 FROM assets crop WHERE crop.id = na.assetId AND crop.isSystemVariant = 1 AND crop.parentAssetId = master.id)
|
|
25771
26412
|
)
|
|
25772
26413
|
WHERE master.id IN (${e})
|
|
25773
|
-
GROUP BY master.id`,
|
|
26414
|
+
GROUP BY master.id`, x)).forEach((e) => S.set(String(e.assetId), e.count || 0)), (await oS(t, `
|
|
25774
26415
|
SELECT parentAssetId, COUNT(id) AS count
|
|
25775
26416
|
FROM assets
|
|
25776
26417
|
WHERE isSystemVariant = 1 AND parentAssetId IN (${e})
|
|
25777
|
-
GROUP BY parentAssetId`,
|
|
26418
|
+
GROUP BY parentAssetId`, x)).forEach((e) => C.set(String(e.parentAssetId), e.count || 0));
|
|
25778
26419
|
}
|
|
25779
|
-
let
|
|
26420
|
+
let w = b.map((t) => {
|
|
25780
26421
|
let n = {
|
|
25781
26422
|
title: "",
|
|
25782
26423
|
alt: "",
|
|
@@ -25788,7 +26429,7 @@ aS.get("/", async (e) => {
|
|
|
25788
26429
|
...JSON.parse(t.dataJson || "{}")
|
|
25789
26430
|
};
|
|
25790
26431
|
} catch {}
|
|
25791
|
-
let r =
|
|
26432
|
+
let r = lS(t.cdnUrl, t.storageKeyPrivate, e.env?.CDN_DOMAIN);
|
|
25792
26433
|
return {
|
|
25793
26434
|
id: t.id,
|
|
25794
26435
|
filename: t.filename || "Untitled Asset",
|
|
@@ -25800,13 +26441,13 @@ aS.get("/", async (e) => {
|
|
|
25800
26441
|
createdAt: t.createdAt,
|
|
25801
26442
|
updatedAt: t.updatedAt,
|
|
25802
26443
|
deletedAt: t.deletedAt || null,
|
|
25803
|
-
usageCount:
|
|
25804
|
-
variantCount:
|
|
26444
|
+
usageCount: S.get(String(t.id)) || 0,
|
|
26445
|
+
variantCount: C.get(String(t.id)) || 0,
|
|
25805
26446
|
url: r,
|
|
25806
26447
|
originalUrl: r
|
|
25807
26448
|
};
|
|
25808
26449
|
});
|
|
25809
|
-
return e.json(
|
|
26450
|
+
return e.json(w);
|
|
25810
26451
|
} catch (t) {
|
|
25811
26452
|
return e.json({
|
|
25812
26453
|
error: "Failed to fetch assets",
|
|
@@ -25815,85 +26456,99 @@ aS.get("/", async (e) => {
|
|
|
25815
26456
|
}
|
|
25816
26457
|
}), aS.post("/upload", async (e) => {
|
|
25817
26458
|
try {
|
|
25818
|
-
let t = wb(e), { storage: n } = ix(e.env), r = await e.req.parseBody(), i = r.file, a = r.isVariant === "true" || r.isVariant === "1" || r.temporary === "true",
|
|
26459
|
+
let t = wb(e), { storage: n } = ix(e.env), r = await e.req.parseBody(), i = r.file, a = r.folderPath, o = r.isVariant === "true" || r.isVariant === "1" || r.temporary === "true", s = r.replaceAssetId, c = typeof s == "string" && s.trim().length > 0 ? s.trim() : null, l = r.parentAssetId || r.parentAsset, u = typeof l == "string" && l.trim().length > 0 ? l.trim() : null;
|
|
25819
26460
|
if (!i || !(i instanceof File)) return e.json({ error: "No file uploaded" }, 400);
|
|
25820
|
-
let
|
|
25821
|
-
if (
|
|
25822
|
-
if (typeof
|
|
25823
|
-
|
|
26461
|
+
let d = r.cropCoordinates, f = null, p = null;
|
|
26462
|
+
if (d) {
|
|
26463
|
+
if (typeof d == "string") {
|
|
26464
|
+
f = d;
|
|
25824
26465
|
try {
|
|
25825
|
-
|
|
26466
|
+
p = JSON.parse(d);
|
|
25826
26467
|
} catch {}
|
|
25827
|
-
} else
|
|
25828
|
-
}
|
|
25829
|
-
let
|
|
25830
|
-
if (!
|
|
25831
|
-
let
|
|
25832
|
-
|
|
25833
|
-
let
|
|
25834
|
-
if (
|
|
25835
|
-
let r = await oS(t, "SELECT storageKeyPrivate, isSystemVariant, parentAssetId FROM assets WHERE id = ?", [
|
|
26468
|
+
} else f = JSON.stringify(d), p = d;
|
|
26469
|
+
}
|
|
26470
|
+
let m = crypto.randomUUID().replace(/-/g, "").slice(0, 12), h = (/* @__PURE__ */ new Date()).toISOString().slice(0, 7).replace("-", "/"), g = o || i.name.startsWith("crop_"), _ = g ? `kama/cache/${h}/${m}` : `kama/uploads/${h}/${m}`, v = await n.upload(i, _), y = typeof v == "string" ? v : v?.key || v?.storageKeyPrivate || v?.storageKey || `${_}/${m}_${i.name}`;
|
|
26471
|
+
if (!y) throw Error("Storage provider failed to return a valid storage key");
|
|
26472
|
+
let b = e.env.CDN_DOMAIN, x = y.replace(/^\//, ""), S = b ? `https://${b}/media/${x}` : `/media/${x}`, C = i.type || "application/octet-stream", w = i.size || 0, T = e.get("userId"), E = typeof T == "string" && T.trim().length > 0 ? T : null;
|
|
26473
|
+
E && (await oS(t, "SELECT id FROM users WHERE id = ?", [E])).length === 0 && (E = null);
|
|
26474
|
+
let D = new mx(e.env);
|
|
26475
|
+
if (c) {
|
|
26476
|
+
let r = await oS(t, "SELECT storageKeyPrivate, isSystemVariant, parentAssetId FROM assets WHERE id = ?", [c]);
|
|
25836
26477
|
if (r.length > 0) {
|
|
25837
26478
|
let a = r[0];
|
|
25838
26479
|
if (await sS(t, "UPDATE assets SET filename = ?, mimeType = ?, sizeBytes = ?, storageKeyPrivate = ?, cdnUrl = ?, updatedAt = CURRENT_TIMESTAMP WHERE id = ?", [
|
|
25839
26480
|
i.name,
|
|
25840
|
-
S,
|
|
25841
26481
|
C,
|
|
25842
|
-
|
|
25843
|
-
|
|
25844
|
-
|
|
26482
|
+
w,
|
|
26483
|
+
y,
|
|
26484
|
+
S,
|
|
26485
|
+
c
|
|
25845
26486
|
]), a.storageKeyPrivate) try {
|
|
25846
26487
|
await n.delete(a.storageKeyPrivate);
|
|
25847
|
-
} catch
|
|
25848
|
-
|
|
25849
|
-
|
|
25850
|
-
|
|
25851
|
-
|
|
25852
|
-
return e.json({
|
|
25853
|
-
id: s,
|
|
25854
|
-
url: o,
|
|
25855
|
-
originalUrl: o,
|
|
26488
|
+
} catch {}
|
|
26489
|
+
return D.purgeAsset(e, t, c), e.json({
|
|
26490
|
+
id: c,
|
|
26491
|
+
url: `${S}?v=${Date.now()}`,
|
|
26492
|
+
originalUrl: `${S}?v=${Date.now()}`,
|
|
25856
26493
|
parentAssetId: a.parentAssetId,
|
|
25857
|
-
cropCoordinates:
|
|
26494
|
+
cropCoordinates: p,
|
|
25858
26495
|
filename: i.name,
|
|
25859
|
-
mimeType:
|
|
26496
|
+
mimeType: C,
|
|
25860
26497
|
usageCount: 0,
|
|
25861
26498
|
isSystemVariant: !!a.isSystemVariant,
|
|
25862
26499
|
replaced: !0
|
|
25863
26500
|
}, 200);
|
|
25864
26501
|
}
|
|
25865
26502
|
}
|
|
25866
|
-
let
|
|
25867
|
-
await sS(t, "INSERT INTO assets (id, filename, mimeType, sizeBytes, storageKeyPrivate, cdnUrl, createdById, isSystemVariant, parentAssetId, cropCoordinatesJson) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", [
|
|
25868
|
-
|
|
26503
|
+
let O = `ast_${m}`, ee = +!!g;
|
|
26504
|
+
if (await sS(t, "INSERT INTO assets (id, filename, mimeType, sizeBytes, storageKeyPrivate, cdnUrl, createdById, isSystemVariant, parentAssetId, cropCoordinatesJson) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", [
|
|
26505
|
+
O,
|
|
25869
26506
|
i.name,
|
|
25870
|
-
S,
|
|
25871
26507
|
C,
|
|
25872
|
-
|
|
25873
|
-
|
|
25874
|
-
|
|
25875
|
-
|
|
25876
|
-
|
|
25877
|
-
|
|
25878
|
-
|
|
25879
|
-
|
|
25880
|
-
|
|
25881
|
-
let n
|
|
25882
|
-
|
|
26508
|
+
w,
|
|
26509
|
+
y,
|
|
26510
|
+
S,
|
|
26511
|
+
E,
|
|
26512
|
+
ee,
|
|
26513
|
+
u,
|
|
26514
|
+
f
|
|
26515
|
+
]), typeof a == "string" && a.trim()) {
|
|
26516
|
+
let e = a.split("/").filter((e) => e.trim() !== "");
|
|
26517
|
+
for (let n of e) {
|
|
26518
|
+
let e = cS(n), r = null, i = await oS(t, "SELECT id FROM taxonomy_terms WHERE taxonomy = ? AND key = ?", ["media-tag", e]);
|
|
26519
|
+
if (i.length > 0) r = i[0].id;
|
|
26520
|
+
else {
|
|
26521
|
+
await sS(t, "INSERT INTO taxonomy_terms (taxonomy, key, label, sortOrder, dataJson) VALUES (?, ?, ?, ?, ?)", [
|
|
26522
|
+
"media-tag",
|
|
26523
|
+
e,
|
|
26524
|
+
n,
|
|
26525
|
+
0,
|
|
26526
|
+
"{}"
|
|
26527
|
+
]);
|
|
26528
|
+
let i = await oS(t, "SELECT id FROM taxonomy_terms WHERE taxonomy = ? AND key = ?", ["media-tag", e]);
|
|
26529
|
+
i.length > 0 && (r = i[0].id);
|
|
26530
|
+
}
|
|
26531
|
+
r && await sS(t, "INSERT OR IGNORE INTO asset_terms (assetId, termId) VALUES (?, ?)", [O, r]);
|
|
26532
|
+
}
|
|
26533
|
+
}
|
|
26534
|
+
let k = S;
|
|
26535
|
+
if (u) {
|
|
26536
|
+
let n = await oS(t, "SELECT cdnUrl, storageKeyPrivate FROM assets WHERE id = ?", [u]);
|
|
26537
|
+
n.length > 0 && (k = lS(n[0].cdnUrl, n[0].storageKeyPrivate, b)), D.purgeAsset(e, t, u);
|
|
25883
26538
|
}
|
|
25884
26539
|
return e.json({
|
|
25885
|
-
id:
|
|
25886
|
-
url:
|
|
25887
|
-
originalUrl:
|
|
25888
|
-
parentAssetId:
|
|
25889
|
-
cropCoordinates:
|
|
26540
|
+
id: O,
|
|
26541
|
+
url: S,
|
|
26542
|
+
originalUrl: k,
|
|
26543
|
+
parentAssetId: u,
|
|
26544
|
+
cropCoordinates: p,
|
|
25890
26545
|
filename: i.name,
|
|
25891
|
-
mimeType:
|
|
26546
|
+
mimeType: C,
|
|
25892
26547
|
usageCount: 0,
|
|
25893
|
-
isSystemVariant: !!
|
|
26548
|
+
isSystemVariant: !!ee
|
|
25894
26549
|
}, 201);
|
|
25895
26550
|
} catch (t) {
|
|
25896
|
-
return
|
|
26551
|
+
return e.json({
|
|
25897
26552
|
error: "Upload failed",
|
|
25898
26553
|
details: t.message || String(t)
|
|
25899
26554
|
}, 500);
|
|
@@ -25902,18 +26557,18 @@ aS.get("/", async (e) => {
|
|
|
25902
26557
|
try {
|
|
25903
26558
|
let t = wb(e), n = e.req.param("id"), r = await oS(t, "SELECT * FROM assets WHERE id = ?", [n]);
|
|
25904
26559
|
if (!r || r.length === 0) return e.json({ error: "Asset not found" }, 404);
|
|
25905
|
-
let i = r[0], a = await oS(t, "\n SELECT DISTINCT cn.id, cn.title, cn.contentType, cn.slug, na.fieldKey, na.assetId \n FROM node_assets na \n INNER JOIN content_nodes cn ON na.nodeId = cn.id \n LEFT JOIN assets crop ON na.assetId = crop.id \n WHERE na.assetId = ? OR (crop.isSystemVariant = 1 AND crop.parentAssetId = ?)\n ", [n, n]), o = await oS(t, "\n SELECT id, filename, mimeType, sizeBytes, cdnUrl, storageKeyPrivate, parentAssetId, cropCoordinatesJson, createdAt, updatedAt \n FROM assets \n WHERE isSystemVariant = 1 AND parentAssetId = ? \n ORDER BY createdAt DESC\n ", [n]), s = {
|
|
26560
|
+
let i = r[0], a = await oS(t, "\n SELECT DISTINCT cn.id, cn.title, cn.contentType, cn.slug, na.fieldKey, na.assetId \n FROM node_assets na \n INNER JOIN content_nodes cn ON na.nodeId = cn.id \n LEFT JOIN assets crop ON na.assetId = crop.id \n WHERE na.assetId = ? OR (crop.isSystemVariant = 1 AND crop.parentAssetId = ?)\n ", [n, n]), o = await oS(t, "\n SELECT id, filename, mimeType, sizeBytes, cdnUrl, storageKeyPrivate, parentAssetId, cropCoordinatesJson, createdAt, updatedAt \n FROM assets \n WHERE isSystemVariant = 1 AND parentAssetId = ? \n ORDER BY createdAt DESC\n ", [n]), s = (await oS(t, "\n SELECT t.id FROM asset_terms at \n JOIN taxonomy_terms t ON at.termId = t.id \n WHERE at.assetId = ?\n ", [n])).map((e) => `trm_${e.id}`), c = {
|
|
25906
26561
|
title: "",
|
|
25907
26562
|
alt: "",
|
|
25908
26563
|
description: ""
|
|
25909
26564
|
};
|
|
25910
26565
|
try {
|
|
25911
|
-
|
|
25912
|
-
...
|
|
26566
|
+
c = {
|
|
26567
|
+
...c,
|
|
25913
26568
|
...JSON.parse(i.dataJson || "{}")
|
|
25914
26569
|
};
|
|
25915
26570
|
} catch {}
|
|
25916
|
-
let
|
|
26571
|
+
let l = i.updatedAt ? new Date(i.updatedAt).getTime() : Date.now(), u = `${lS(i.cdnUrl, i.storageKeyPrivate, e.env?.CDN_DOMAIN)}?v=${l}`;
|
|
25917
26572
|
return e.json({
|
|
25918
26573
|
id: i.id,
|
|
25919
26574
|
filename: i.filename,
|
|
@@ -25921,18 +26576,19 @@ aS.get("/", async (e) => {
|
|
|
25921
26576
|
sizeBytes: i.sizeBytes,
|
|
25922
26577
|
createdAt: i.createdAt,
|
|
25923
26578
|
updatedAt: i.updatedAt,
|
|
25924
|
-
title:
|
|
25925
|
-
alt:
|
|
25926
|
-
description:
|
|
25927
|
-
|
|
25928
|
-
|
|
26579
|
+
title: c.title || "",
|
|
26580
|
+
alt: c.alt || "",
|
|
26581
|
+
description: c.description || "",
|
|
26582
|
+
tags: s,
|
|
26583
|
+
url: u,
|
|
26584
|
+
originalUrl: u,
|
|
25929
26585
|
connectedNodes: a,
|
|
25930
26586
|
variants: o.map((t) => {
|
|
25931
26587
|
let n = null;
|
|
25932
26588
|
if (t.cropCoordinatesJson) try {
|
|
25933
26589
|
n = JSON.parse(t.cropCoordinatesJson);
|
|
25934
26590
|
} catch {}
|
|
25935
|
-
let r = t.updatedAt ? new Date(t.updatedAt).getTime() :
|
|
26591
|
+
let r = t.updatedAt ? new Date(t.updatedAt).getTime() : l, a = lS(t.cdnUrl, t.storageKeyPrivate, e.env?.CDN_DOMAIN);
|
|
25936
26592
|
return {
|
|
25937
26593
|
id: t.id,
|
|
25938
26594
|
filename: t.filename,
|
|
@@ -25942,7 +26598,7 @@ aS.get("/", async (e) => {
|
|
|
25942
26598
|
parentAssetId: t.parentAssetId || i.id,
|
|
25943
26599
|
cropCoordinates: n,
|
|
25944
26600
|
url: `${a}?v=${r}`,
|
|
25945
|
-
originalUrl:
|
|
26601
|
+
originalUrl: u
|
|
25946
26602
|
};
|
|
25947
26603
|
})
|
|
25948
26604
|
});
|
|
@@ -25957,11 +26613,16 @@ aS.get("/", async (e) => {
|
|
|
25957
26613
|
try {
|
|
25958
26614
|
o = JSON.parse(a.dataJson || "{}");
|
|
25959
26615
|
} catch {}
|
|
25960
|
-
|
|
26616
|
+
if (r.title !== void 0 && (o.title = r.title), r.alt !== void 0 && (o.alt = r.alt), r.description !== void 0 && (o.description = r.description), await sS(t, "UPDATE assets SET filename = ?, dataJson = ?, updatedAt = CURRENT_TIMESTAMP WHERE id = ?", [
|
|
25961
26617
|
r.filename === void 0 ? a.filename : r.filename,
|
|
25962
26618
|
JSON.stringify(o),
|
|
25963
26619
|
n
|
|
25964
|
-
]),
|
|
26620
|
+
]), r.tags !== void 0 && Array.isArray(r.tags)) {
|
|
26621
|
+
await sS(t, "DELETE FROM asset_terms WHERE assetId = ?", [n]);
|
|
26622
|
+
let e = r.tags.map((e) => Number(e.replace("trm_", ""))).filter((e) => !isNaN(e));
|
|
26623
|
+
for (let r of e) await sS(t, "INSERT OR IGNORE INTO asset_terms (assetId, termId) VALUES (?, ?)", [n, r]);
|
|
26624
|
+
}
|
|
26625
|
+
return new mx(e.env).purgeAsset(e, t, n), e.json({ success: !0 });
|
|
25965
26626
|
} catch {
|
|
25966
26627
|
return e.json({ error: "Failed to update asset" }, 500);
|
|
25967
26628
|
}
|
|
@@ -26017,14 +26678,14 @@ aS.get("/", async (e) => {
|
|
|
26017
26678
|
deletedVariantsCount: a.length - 1
|
|
26018
26679
|
});
|
|
26019
26680
|
} catch (t) {
|
|
26020
|
-
return
|
|
26681
|
+
return e.json({
|
|
26021
26682
|
error: "Failed to purge asset",
|
|
26022
26683
|
details: t.message || String(t)
|
|
26023
26684
|
}, 500);
|
|
26024
26685
|
}
|
|
26025
26686
|
});
|
|
26026
|
-
var
|
|
26027
|
-
function
|
|
26687
|
+
var uS = new $y();
|
|
26688
|
+
function dS() {
|
|
26028
26689
|
return {
|
|
26029
26690
|
fullPath: /* @__PURE__ */ new Map(),
|
|
26030
26691
|
treeEdges: /* @__PURE__ */ new Map(),
|
|
@@ -26032,7 +26693,7 @@ function uS() {
|
|
|
26032
26693
|
assetUrls: /* @__PURE__ */ new Map()
|
|
26033
26694
|
};
|
|
26034
26695
|
}
|
|
26035
|
-
function
|
|
26696
|
+
function fS(e, t, n = []) {
|
|
26036
26697
|
let r = Date.now();
|
|
26037
26698
|
if (e && String(e).trim() !== "") {
|
|
26038
26699
|
let t = Date.parse(e);
|
|
@@ -26043,7 +26704,7 @@ function dS(e, t, n = []) {
|
|
|
26043
26704
|
!isNaN(e) && e > r && n.push(e);
|
|
26044
26705
|
}
|
|
26045
26706
|
}
|
|
26046
|
-
function
|
|
26707
|
+
function pS(e, t) {
|
|
26047
26708
|
let n = Date.now();
|
|
26048
26709
|
if (e && String(e).trim() !== "") {
|
|
26049
26710
|
let t = Date.parse(e);
|
|
@@ -26055,7 +26716,7 @@ function fS(e, t) {
|
|
|
26055
26716
|
}
|
|
26056
26717
|
return !0;
|
|
26057
26718
|
}
|
|
26058
|
-
async function
|
|
26719
|
+
async function mS(e, t, n, r, i, a) {
|
|
26059
26720
|
let o = t.filter((e) => e.componentId === "content-feed" || e.componentId === "article-list" || e.componentId === "nodeList" || e.componentId === "node-list");
|
|
26060
26721
|
await Promise.all(o.map(async (t) => {
|
|
26061
26722
|
let o = t.data || {}, s = o.nodeType || ["article"], c = (Array.isArray(s) ? s : String(s).split(",")).map((e) => String(e).trim()).filter(Boolean), l = {};
|
|
@@ -26103,7 +26764,7 @@ async function pS(e, t, n, r, i, a) {
|
|
|
26103
26764
|
if (e.dataJson) try {
|
|
26104
26765
|
t = typeof e.dataJson == "string" ? JSON.parse(e.dataJson) : e.dataJson;
|
|
26105
26766
|
} catch {}
|
|
26106
|
-
i &&
|
|
26767
|
+
i && fS(t.startShowingAt, t.stopShowingAt, i);
|
|
26107
26768
|
let n = {};
|
|
26108
26769
|
if (a) {
|
|
26109
26770
|
let r = l[e.contentType || "article"] || [];
|
|
@@ -26127,7 +26788,7 @@ async function pS(e, t, n, r, i, a) {
|
|
|
26127
26788
|
}
|
|
26128
26789
|
}));
|
|
26129
26790
|
}
|
|
26130
|
-
async function
|
|
26791
|
+
async function hS(e, t, n, r, i, a, o = !1, s, c) {
|
|
26131
26792
|
if (!t) return { blocks: [] };
|
|
26132
26793
|
let l = await e.prepare("\n WITH RECURSIVE ancestor_path(contentId, title, slug, parentId, level) AS (\n SELECT t.contentId, c.title, c.slug, t.parentId, 0 FROM tree_nodes t INNER JOIN content_nodes c ON t.contentId = c.id WHERE t.contentId = ? AND t.treeId = ?\n UNION ALL\n SELECT t.contentId, c.title, c.slug, t.parentId, ap.level + 1 FROM tree_nodes t INNER JOIN content_nodes c ON t.contentId = c.id INNER JOIN ancestor_path ap ON t.contentId = ap.parentId AND t.treeId = ?\n )\n SELECT * FROM ancestor_path ORDER BY level ASC\n ").all(t, n, n), u = Array.isArray(l) ? l : l?.results || [];
|
|
26133
26794
|
if (!u || u.length === 0) return { blocks: [] };
|
|
@@ -26163,11 +26824,11 @@ async function mS(e, t, n, r, i, a, o = !1, s, c) {
|
|
|
26163
26824
|
try {
|
|
26164
26825
|
n = (typeof t.dataJson == "string" ? JSON.parse(t.dataJson) : t.dataJson) || {};
|
|
26165
26826
|
} catch {}
|
|
26166
|
-
c &&
|
|
26167
|
-
let l = n.hidden === !0 || n.hidden === 1 || n.hidden === "1" || n.hidden === "true", u =
|
|
26827
|
+
c && fS(n.startShowingAt, n.stopShowingAt, c);
|
|
26828
|
+
let l = n.hidden === !0 || n.hidden === 1 || n.hidden === "1" || n.hidden === "true", u = pS(n.startShowingAt, n.stopShowingAt);
|
|
26168
26829
|
if (!o && (l || !u)) return null;
|
|
26169
|
-
let d = t.elementType || t.componentId || "text-block", f = i.blocks?.[d]?.fields || i.elements?.[d]?.fields || i.components?.[d]?.fields || {}, p = String(n.blockId || n._instanceId || n.id || t.blockId || t.id), m =
|
|
26170
|
-
return m = await fx(e, m), m =
|
|
26830
|
+
let d = t.elementType || t.componentId || "text-block", f = i.blocks?.[d]?.fields || i.elements?.[d]?.fields || i.components?.[d]?.fields || {}, p = String(n.blockId || n._instanceId || n.id || t.blockId || t.id), m = gS(n, f);
|
|
26831
|
+
return m = await fx(e, m), m = _S(m), m = await vS(e, m, a, s), m.blockId = p, {
|
|
26171
26832
|
region: t.region || r,
|
|
26172
26833
|
block: {
|
|
26173
26834
|
instanceId: t.id,
|
|
@@ -26187,7 +26848,7 @@ async function mS(e, t, n, r, i, a, o = !1, s, c) {
|
|
|
26187
26848
|
}
|
|
26188
26849
|
return { blocks: [] };
|
|
26189
26850
|
}
|
|
26190
|
-
function
|
|
26851
|
+
function gS(e, t = {}) {
|
|
26191
26852
|
let n = {};
|
|
26192
26853
|
for (let [r, i] of Object.entries(e)) r.endsWith("_meta") || [
|
|
26193
26854
|
"disabledRegions",
|
|
@@ -26203,14 +26864,14 @@ function hS(e, t = {}) {
|
|
|
26203
26864
|
].includes(r) || r.startsWith("_") || (!t[r] || t[r].public !== !1) && (n[r] = i);
|
|
26204
26865
|
return n;
|
|
26205
26866
|
}
|
|
26206
|
-
function
|
|
26207
|
-
if (Array.isArray(e)) return e.map(
|
|
26867
|
+
function _S(e) {
|
|
26868
|
+
if (Array.isArray(e)) return e.map(_S);
|
|
26208
26869
|
if (!e || typeof e != "object") return e;
|
|
26209
26870
|
if (typeof e.id == "string" && e.id.startsWith("ast_") && typeof e.url == "string") {
|
|
26210
26871
|
let t = e.metadataOverrides || {}, n = e.variants && typeof e.variants == "object" ? e.variants : {}, r = Object.entries(n).find(([, t]) => t?.id === e.id)?.[0], i = r ? {
|
|
26211
26872
|
...t,
|
|
26212
26873
|
...t.crops?.[r] || {}
|
|
26213
|
-
} : t, a = Object.fromEntries(Object.entries(n).filter(([, t]) => t?.id !== e.id).map(([t, n]) => [t,
|
|
26874
|
+
} : t, a = Object.fromEntries(Object.entries(n).filter(([, t]) => t?.id !== e.id).map(([t, n]) => [t, _S({
|
|
26214
26875
|
...n,
|
|
26215
26876
|
title: n?.title ?? e.title ?? "",
|
|
26216
26877
|
alt: n?.alt ?? e.alt ?? "",
|
|
@@ -26224,9 +26885,9 @@ function gS(e) {
|
|
|
26224
26885
|
...Object.keys(a).length > 0 ? { variants: a } : {}
|
|
26225
26886
|
};
|
|
26226
26887
|
}
|
|
26227
|
-
return Object.fromEntries(Object.entries(e).map(([e, t]) => [e,
|
|
26888
|
+
return Object.fromEntries(Object.entries(e).map(([e, t]) => [e, _S(t)]));
|
|
26228
26889
|
}
|
|
26229
|
-
async function
|
|
26890
|
+
async function vS(e, t, n, r) {
|
|
26230
26891
|
if (typeof t == "string") {
|
|
26231
26892
|
if (!t.includes("#node:") && !t.includes("data-node-id") && !t.includes("#asset:") && !t.includes("data-asset-id")) return t;
|
|
26232
26893
|
let r = (e, t) => {
|
|
@@ -26267,25 +26928,25 @@ async function _S(e, t, n, r) {
|
|
|
26267
26928
|
return /href\s*=\s*["'][^"']*["']/i.test(d) ? d = d.replace(/href\s*=\s*["'][^"']*["']/i, `href="${u}"`) : d += ` href="${u}"`, `<a ${d}>`;
|
|
26268
26929
|
});
|
|
26269
26930
|
}
|
|
26270
|
-
if (Array.isArray(t)) return Promise.all(t.map((t) =>
|
|
26931
|
+
if (Array.isArray(t)) return Promise.all(t.map((t) => vS(e, t, n, r)));
|
|
26271
26932
|
if (t && typeof t == "object") {
|
|
26272
26933
|
if (typeof t.href == "string" && (t.href.startsWith("#node:") || t.href.startsWith("#asset:"))) return {
|
|
26273
26934
|
...t,
|
|
26274
|
-
href: await
|
|
26935
|
+
href: await yS(e, t, n, r)
|
|
26275
26936
|
};
|
|
26276
|
-
let i = await Promise.all(Object.entries(t).map(async ([t, i]) => [t, await
|
|
26937
|
+
let i = await Promise.all(Object.entries(t).map(async ([t, i]) => [t, await vS(e, i, n, r)]));
|
|
26277
26938
|
return Object.fromEntries(i);
|
|
26278
26939
|
}
|
|
26279
26940
|
return t;
|
|
26280
26941
|
}
|
|
26281
|
-
async function
|
|
26942
|
+
async function yS(e, t, n, r) {
|
|
26282
26943
|
let i = t.href.match(/^#node:(.+)$/), a = t.href.match(/^#asset:(.+)$/);
|
|
26283
|
-
if (a) return
|
|
26944
|
+
if (a) return bS(e, a[1], r);
|
|
26284
26945
|
if (!i) return t.href;
|
|
26285
26946
|
let o = i[1];
|
|
26286
26947
|
return (await e.prepare("\n SELECT path \n FROM node_routes \n WHERE nodeId = ? AND isCanonical = 1 \n ORDER BY CASE WHEN channelId = ? THEN 0 ELSE 1 END ASC \n LIMIT 1\n ").get(Number(o), n))?.path || "#";
|
|
26287
26948
|
}
|
|
26288
|
-
async function
|
|
26949
|
+
async function bS(e, t, n) {
|
|
26289
26950
|
let r = String(t), i = n.assetUrls.get(r);
|
|
26290
26951
|
if (i) return i;
|
|
26291
26952
|
let a = (async () => {
|
|
@@ -26294,7 +26955,7 @@ async function yS(e, t, n) {
|
|
|
26294
26955
|
})();
|
|
26295
26956
|
return n.assetUrls.set(r, a), a;
|
|
26296
26957
|
}
|
|
26297
|
-
function
|
|
26958
|
+
function xS(e) {
|
|
26298
26959
|
let t = e.socialImage;
|
|
26299
26960
|
if (!t || typeof t != "object") return null;
|
|
26300
26961
|
let n = (e, t) => {
|
|
@@ -26325,7 +26986,7 @@ function bS(e) {
|
|
|
26325
26986
|
])
|
|
26326
26987
|
};
|
|
26327
26988
|
}
|
|
26328
|
-
async function
|
|
26989
|
+
async function SS(e, t, n, r, i) {
|
|
26329
26990
|
let a = {}, o = null;
|
|
26330
26991
|
if (t) {
|
|
26331
26992
|
let i = await e.prepare("\n WITH RECURSIVE ancestor_path(contentId, title, slug, parentId, level) AS (\n SELECT t.contentId, c.title, c.slug, t.parentId, 0 FROM tree_nodes t INNER JOIN content_nodes c ON t.contentId = c.id WHERE t.contentId = ? AND t.treeId = ?\n UNION ALL\n SELECT t.contentId, c.title, c.slug, t.parentId, ap.level + 1 FROM tree_nodes t INNER JOIN content_nodes c ON t.contentId = c.id INNER JOIN ancestor_path ap ON t.contentId = ap.parentId AND t.treeId = ?\n )\n SELECT c.dataJson, c.draftDataJson FROM ancestor_path ap INNER JOIN content_nodes c ON ap.contentId = c.id ORDER BY ap.level ASC\n ").all(t, n, n), s = Array.isArray(i) ? i : i?.results || [], c = /* @__PURE__ */ new Set([
|
|
@@ -26363,20 +27024,20 @@ async function xS(e, t, n, r, i) {
|
|
|
26363
27024
|
inheritedFields: a
|
|
26364
27025
|
};
|
|
26365
27026
|
}
|
|
26366
|
-
function
|
|
27027
|
+
function CS(e) {
|
|
26367
27028
|
let t = Number(e?.env?.CMS_NODE_CACHE_TTL);
|
|
26368
27029
|
return Number.isFinite(t) && t >= 60 ? Math.floor(t) : 300;
|
|
26369
27030
|
}
|
|
26370
|
-
async function
|
|
27031
|
+
async function wS(e, t, n, r) {
|
|
26371
27032
|
try {
|
|
26372
27033
|
await e.set(t, n, r);
|
|
26373
27034
|
} catch (e) {
|
|
26374
27035
|
console.warn("[CMS Cache] Failed to write node response to cache:", e);
|
|
26375
27036
|
}
|
|
26376
27037
|
}
|
|
26377
|
-
async function
|
|
27038
|
+
async function TS(e) {
|
|
26378
27039
|
try {
|
|
26379
|
-
let t = e.get("db"), n =
|
|
27040
|
+
let t = e.get("db"), n = dS(), r = [], i = new URL(e.req.url), a = i.searchParams.get("channelId") || i.searchParams.get("channel"), o = i.searchParams.get("lang"), s = i.searchParams.get("preview") === "true", c = i.searchParams.get("revisionId"), l = i.searchParams.get("treeId"), u = i.pathname, d = "";
|
|
26380
27041
|
u.includes("/node/") ? d = u.substring(u.indexOf("/node/") + 6) : u.endsWith("/node") && (d = "");
|
|
26381
27042
|
try {
|
|
26382
27043
|
d = decodeURIComponent(d);
|
|
@@ -26424,12 +27085,12 @@ async function wS(e) {
|
|
|
26424
27085
|
e.defaultLanguage ? w = String(e.defaultLanguage).trim() : e.language && (w = String(e.language).trim());
|
|
26425
27086
|
} catch {}
|
|
26426
27087
|
}
|
|
26427
|
-
let T = y.language?.trim() || null,
|
|
26428
|
-
if (!s && !
|
|
26429
|
-
let t = await
|
|
27088
|
+
let T = y.language?.trim() || null, E = C || w || o?.trim() || null, D = T || E || null, O = `node:${g || _}:${D || "default"}:${d}`, ee = e.req.header("x-bypass-cache") === "true" || !!c, k = $b(e), A = CS(e);
|
|
27089
|
+
if (!s && !ee) {
|
|
27090
|
+
let t = await k.get(O);
|
|
26430
27091
|
if (t) {
|
|
26431
27092
|
e.header("X-Cache", "HIT");
|
|
26432
|
-
let n =
|
|
27093
|
+
let n = A;
|
|
26433
27094
|
if (t.meta && t.meta.nextEventTimestamp) {
|
|
26434
27095
|
let e = Math.floor((t.meta.nextEventTimestamp - Date.now()) / 1e3);
|
|
26435
27096
|
e > 0 && e < n ? n = e : e <= 0 && (n = 0);
|
|
@@ -26437,28 +27098,28 @@ async function wS(e) {
|
|
|
26437
27098
|
return n > 0 ? e.header("Cache-Control", `public, max-age=${n}, s-maxage=${n}`) : e.header("Cache-Control", "no-cache, no-store, must-revalidate"), e.json(t);
|
|
26438
27099
|
}
|
|
26439
27100
|
}
|
|
26440
|
-
let
|
|
26441
|
-
if (!S && !
|
|
27101
|
+
let j = S?.parentId || null;
|
|
27102
|
+
if (!S && !j) {
|
|
26442
27103
|
let e = f.split("/").filter(Boolean);
|
|
26443
27104
|
if (e.length > 1) {
|
|
26444
27105
|
e.pop();
|
|
26445
27106
|
let n = "/" + e.join("/"), r = await t.prepare("SELECT nodeId FROM node_routes WHERE path = ? AND channelId = ? LIMIT 1").get(n, g);
|
|
26446
27107
|
if (r?.nodeId) {
|
|
26447
27108
|
let e = await t.prepare("SELECT contentId, treeId FROM tree_nodes WHERE contentId = ? LIMIT 1").get(r.nodeId);
|
|
26448
|
-
e && (
|
|
27109
|
+
e && (j = e.contentId, b = e.treeId);
|
|
26449
27110
|
}
|
|
26450
27111
|
}
|
|
26451
|
-
if (!
|
|
27112
|
+
if (!j) {
|
|
26452
27113
|
let e = await t.prepare("SELECT contentId, treeId FROM tree_nodes WHERE parentId IS NULL ORDER BY sortOrder ASC LIMIT 1").get();
|
|
26453
|
-
e && (
|
|
27114
|
+
e && (j = e.contentId, b = e.treeId);
|
|
26454
27115
|
}
|
|
26455
27116
|
}
|
|
26456
|
-
let
|
|
27117
|
+
let te = v?.path || (f === "" ? "/" : f), ne = {
|
|
26457
27118
|
id: y.id,
|
|
26458
27119
|
title: y.title,
|
|
26459
27120
|
slug: y.slug,
|
|
26460
|
-
language:
|
|
26461
|
-
path:
|
|
27121
|
+
language: D,
|
|
27122
|
+
path: te,
|
|
26462
27123
|
nodeType: y.contentType,
|
|
26463
27124
|
createdAt: y.createdAt,
|
|
26464
27125
|
updatedAt: y.updatedAt
|
|
@@ -26470,37 +27131,37 @@ async function wS(e) {
|
|
|
26470
27131
|
if (x && x.node && x.node.dataJson && (fe = x.node.dataJson), fe) try {
|
|
26471
27132
|
de = typeof fe == "string" ? JSON.parse(fe) : fe;
|
|
26472
27133
|
} catch {}
|
|
26473
|
-
de.disabledRegions && (se = de.disabledRegions), ue = de.hidden === !0 || de.hidden === 1 || de.hidden === "1" || de.hidden === "true", ce = de.startShowingAt || null, le = de.stopShowingAt || null,
|
|
26474
|
-
let pe = de.layoutId, me = pe && pe !== "inherit", { resolvedLayoutId: he, inheritedFields: ge } = await
|
|
27134
|
+
de.disabledRegions && (se = de.disabledRegions), ue = de.hidden === !0 || de.hidden === 1 || de.hidden === "1" || de.hidden === "true", ce = de.startShowingAt || null, le = de.stopShowingAt || null, fS(ce, le, r);
|
|
27135
|
+
let pe = de.layoutId, me = pe && pe !== "inherit", { resolvedLayoutId: he, inheritedFields: ge } = await SS(t, j, b, s, oe), _e = me ? pe : he || ae.defaultLayout || null;
|
|
26475
27136
|
for (let [e, t] of Object.entries(ge)) (de[e] === void 0 || de[e] === null || de[e] === "" || de[e] === "inherit") && t !== void 0 && (de[e] = t);
|
|
26476
|
-
let ve = await fx(t,
|
|
26477
|
-
ve =
|
|
26478
|
-
let ye =
|
|
26479
|
-
delete ve.socialImage, delete ve.fbImage, delete ve.xImage, delete ve.whatsappImage, ye && (ve.socialImages = ye), Object.assign(
|
|
26480
|
-
let be = Number(y.isHidden) === 1 || ue, xe = !
|
|
27137
|
+
let ve = await fx(t, gS(de, oe));
|
|
27138
|
+
ve = _S(ve), ve = await vS(t, ve, g, n), delete ve.language;
|
|
27139
|
+
let ye = xS(ve);
|
|
27140
|
+
delete ve.socialImage, delete ve.fbImage, delete ve.xImage, delete ve.whatsappImage, ye && (ve.socialImages = ye), Object.assign(ne, ve), ne.id = y.id, ne.slug = y.slug, ne.title = y.title, ne.path = te, ne.layoutId = _e;
|
|
27141
|
+
let be = Number(y.isHidden) === 1 || ue, xe = !pS(ce, le), Se = y.status === "draft" || y.status === "new", Ce = y.dataJson && y.dataJson !== "{}" && y.dataJson !== "null";
|
|
26481
27142
|
if (!s && (be || xe || Se && !Ce)) return e.json({ error: "Node is hidden, offline, or has never been published." }, 404);
|
|
26482
27143
|
let we = [];
|
|
26483
27144
|
if (S?.treeNodeId) {
|
|
26484
|
-
let e = await t.prepare("SELECT t.contentId as treeNodeId, t.contentId as id, c.title, c.slug, c.language, c.contentType as nodeType, c.isHidden, c.dataJson, c.draftDataJson FROM tree_nodes t INNER JOIN content_nodes c ON t.contentId = c.id WHERE t.parentId = ? AND t.treeId = ? ORDER BY t.sortOrder ASC").all(S.treeNodeId, b), n = Array.isArray(e) ? e : e?.results || [], i =
|
|
27145
|
+
let e = await t.prepare("SELECT t.contentId as treeNodeId, t.contentId as id, c.title, c.slug, c.language, c.contentType as nodeType, c.isHidden, c.dataJson, c.draftDataJson FROM tree_nodes t INNER JOIN content_nodes c ON t.contentId = c.id WHERE t.parentId = ? AND t.treeId = ? ORDER BY t.sortOrder ASC").all(S.treeNodeId, b), n = Array.isArray(e) ? e : e?.results || [], i = ne.path || "", a = i === "/" ? "" : i;
|
|
26485
27146
|
we = n.map((e) => {
|
|
26486
27147
|
let t = {}, n = s && e.draftDataJson || e.dataJson;
|
|
26487
27148
|
if (!n) return null;
|
|
26488
27149
|
try {
|
|
26489
27150
|
t = (typeof n == "string" ? JSON.parse(n) : n) || {};
|
|
26490
27151
|
} catch {}
|
|
26491
|
-
let i = Number(e.isHidden) === 1 || t.hidden === !0 || t.hidden === 1 || t.hidden === "1", o =
|
|
26492
|
-
return
|
|
27152
|
+
let i = Number(e.isHidden) === 1 || t.hidden === !0 || t.hidden === 1 || t.hidden === "1", o = pS(t.startShowingAt, t.stopShowingAt), c = (e.slug || "").replace(/^\/+|\/+$/g, "");
|
|
27153
|
+
return fS(t.startShowingAt, t.stopShowingAt, r), !s && (i || !o) ? null : {
|
|
26493
27154
|
treeNodeId: e.treeNodeId,
|
|
26494
27155
|
id: e.id,
|
|
26495
27156
|
title: e.title,
|
|
26496
27157
|
slug: c,
|
|
26497
|
-
language: e.language?.trim() ||
|
|
27158
|
+
language: e.language?.trim() || D || null,
|
|
26498
27159
|
path: `${a}/${c}`.replace(/\/+/g, "/"),
|
|
26499
27160
|
nodeType: e.nodeType
|
|
26500
27161
|
};
|
|
26501
27162
|
}).filter(Boolean);
|
|
26502
27163
|
}
|
|
26503
|
-
|
|
27164
|
+
ne.children = we;
|
|
26504
27165
|
let Te = [];
|
|
26505
27166
|
if (x && x.blocks && Array.isArray(x.blocks)) Te = x.blocks.map((e) => ({
|
|
26506
27167
|
...e,
|
|
@@ -26515,11 +27176,11 @@ async function wS(e) {
|
|
|
26515
27176
|
try {
|
|
26516
27177
|
a = (typeof e.dataJson == "string" ? JSON.parse(e.dataJson) : e.dataJson) || {};
|
|
26517
27178
|
} catch {}
|
|
26518
|
-
|
|
26519
|
-
let o = a.hidden === !0 || a.hidden === 1 || a.hidden === "1" || a.hidden === "true", c =
|
|
27179
|
+
fS(a.startShowingAt, a.stopShowingAt, r);
|
|
27180
|
+
let o = a.hidden === !0 || a.hidden === 1 || a.hidden === "1" || a.hidden === "true", c = pS(a.startShowingAt, a.stopShowingAt);
|
|
26520
27181
|
if (!s && (o || !c)) return null;
|
|
26521
|
-
let l = e.elementType || e.componentId || "text-block", u = re.blocks?.[l]?.fields || re.elements?.[l]?.fields || re.components?.[l]?.fields || {}, d = String(a.blockId || a._instanceId || a.id || e.blockId || e.id), f =
|
|
26522
|
-
return f = await fx(t, f), f =
|
|
27182
|
+
let l = e.elementType || e.componentId || "text-block", u = re.blocks?.[l]?.fields || re.elements?.[l]?.fields || re.components?.[l]?.fields || {}, d = String(a.blockId || a._instanceId || a.id || e.blockId || e.id), f = gS(a, u);
|
|
27183
|
+
return f = await fx(t, f), f = _S(f), f = await vS(t, f, g, n), f.blockId = d, {
|
|
26523
27184
|
region: i,
|
|
26524
27185
|
block: {
|
|
26525
27186
|
instanceId: e.id,
|
|
@@ -26543,8 +27204,8 @@ async function wS(e) {
|
|
|
26543
27204
|
};
|
|
26544
27205
|
for (let [e, i] of Object.entries(ke)) {
|
|
26545
27206
|
let a = Ee[e] && Ee[e].length > 0, o = !!se[e];
|
|
26546
|
-
if (Ee[e] || (Ee[e] = [], De[e] = { isInherited: !1 }), (i?.inherit === "parent" || i?.inherit === !0 || i?.inherit === "true" || e === "header" || e === "footer") && !a && !o &&
|
|
26547
|
-
let i = await
|
|
27207
|
+
if (Ee[e] || (Ee[e] = [], De[e] = { isInherited: !1 }), (i?.inherit === "parent" || i?.inherit === !0 || i?.inherit === "true" || e === "header" || e === "footer") && !a && !o && j) {
|
|
27208
|
+
let i = await hS(t, j, b, e, re, g, s, n, r);
|
|
26548
27209
|
if (i.blocks.length > 0 && (Ee[e] = i.blocks, De[e] = {
|
|
26549
27210
|
isInherited: !0,
|
|
26550
27211
|
inheritedFromId: i.inheritedFromId,
|
|
@@ -26556,7 +27217,7 @@ async function wS(e) {
|
|
|
26556
27217
|
});
|
|
26557
27218
|
}
|
|
26558
27219
|
}
|
|
26559
|
-
await Promise.all(Object.keys(Ee).map((e) =>
|
|
27220
|
+
await Promise.all(Object.keys(Ee).map((e) => mS(t, Ee[e], g, D, r, re)));
|
|
26560
27221
|
let Ae = null, je = null;
|
|
26561
27222
|
if (r.length > 0) {
|
|
26562
27223
|
je = Math.min(...r);
|
|
@@ -26566,19 +27227,19 @@ async function wS(e) {
|
|
|
26566
27227
|
let Me = {
|
|
26567
27228
|
channelId: g || _,
|
|
26568
27229
|
treeId: b,
|
|
26569
|
-
language:
|
|
27230
|
+
language: D,
|
|
26570
27231
|
meta: {
|
|
26571
27232
|
cacheTtl: Ae,
|
|
26572
27233
|
nextEventTimestamp: je
|
|
26573
27234
|
},
|
|
26574
|
-
node:
|
|
27235
|
+
node: ne,
|
|
26575
27236
|
content: Ee,
|
|
26576
27237
|
regionMeta: De
|
|
26577
27238
|
};
|
|
26578
|
-
if (!s && !
|
|
27239
|
+
if (!s && !ee) {
|
|
26579
27240
|
e.header("X-Cache", "MISS");
|
|
26580
|
-
let t = Ae === null ?
|
|
26581
|
-
e.header("Cache-Control", `public, max-age=${t}, s-maxage=${t}`), await
|
|
27241
|
+
let t = Ae === null ? A : Ae;
|
|
27242
|
+
e.header("Cache-Control", `public, max-age=${t}, s-maxage=${t}`), await wS(k, O, Me, t);
|
|
26582
27243
|
} else e.header("Cache-Control", "no-cache, no-store, must-revalidate");
|
|
26583
27244
|
return e.json(Me, 200);
|
|
26584
27245
|
} catch (t) {
|
|
@@ -26588,17 +27249,17 @@ async function wS(e) {
|
|
|
26588
27249
|
}, 500);
|
|
26589
27250
|
}
|
|
26590
27251
|
}
|
|
26591
|
-
var
|
|
27252
|
+
var ES = X({
|
|
26592
27253
|
channelId: J().optional().openapi({ description: "The ID or key of the channel" }),
|
|
26593
27254
|
channel: J().optional().openapi({ description: "Legacy alias for channelId" }),
|
|
26594
27255
|
lang: J().optional().openapi({ description: "Requested language code" }),
|
|
26595
27256
|
preview: lv(["true", "false"]).optional().openapi({ description: "Request unpublished draft data" }),
|
|
26596
27257
|
revisionId: J().optional().openapi({ description: "Historical revision version to load" }),
|
|
26597
27258
|
treeId: J().optional().openapi({ description: "The ID of the tree to resolve paths against" })
|
|
26598
|
-
}),
|
|
27259
|
+
}), DS = X({
|
|
26599
27260
|
error: J(),
|
|
26600
27261
|
details: J().optional()
|
|
26601
|
-
}).openapi("ErrorResponse"),
|
|
27262
|
+
}).openapi("ErrorResponse"), OS = X({
|
|
26602
27263
|
channelId: G_([J(), c_()]),
|
|
26603
27264
|
treeId: J().nullable(),
|
|
26604
27265
|
language: J().nullable(),
|
|
@@ -26613,32 +27274,32 @@ var TS = X({
|
|
|
26613
27274
|
inheritedFromId: J().optional(),
|
|
26614
27275
|
inheritedFromTitle: J().optional()
|
|
26615
27276
|
}))
|
|
26616
|
-
}).openapi("NodeResponse"),
|
|
27277
|
+
}).openapi("NodeResponse"), kS = eb({
|
|
26617
27278
|
method: "get",
|
|
26618
27279
|
path: "/{path}",
|
|
26619
27280
|
summary: "Fetch CMS Node Content",
|
|
26620
27281
|
tags: ["Public Node API"],
|
|
26621
27282
|
request: {
|
|
26622
27283
|
params: X({ path: J().optional() }),
|
|
26623
|
-
query:
|
|
27284
|
+
query: ES
|
|
26624
27285
|
},
|
|
26625
27286
|
responses: {
|
|
26626
27287
|
200: {
|
|
26627
27288
|
description: "Fully hydrated CMS Node",
|
|
26628
|
-
content: { "application/json": { schema:
|
|
27289
|
+
content: { "application/json": { schema: OS } }
|
|
26629
27290
|
},
|
|
26630
27291
|
404: {
|
|
26631
27292
|
description: "Not found",
|
|
26632
|
-
content: { "application/json": { schema:
|
|
27293
|
+
content: { "application/json": { schema: DS } }
|
|
26633
27294
|
},
|
|
26634
27295
|
500: {
|
|
26635
27296
|
description: "Server error",
|
|
26636
|
-
content: { "application/json": { schema:
|
|
27297
|
+
content: { "application/json": { schema: DS } }
|
|
26637
27298
|
}
|
|
26638
27299
|
}
|
|
26639
27300
|
});
|
|
26640
|
-
|
|
26641
|
-
var
|
|
27301
|
+
uS.openapi(kS, TS), uS.get("*", TS);
|
|
27302
|
+
var AS = new $y(), jS = X({
|
|
26642
27303
|
nodeType: J().default("article").openapi({ description: "Content types (comma separated)" }),
|
|
26643
27304
|
channelId: J().optional().openapi({ description: "Channel ID or key" }),
|
|
26644
27305
|
limit: Ky().min(1).max(50).default(12).openapi({ description: "Number of items (max 50)" }),
|
|
@@ -26647,7 +27308,7 @@ var kS = new $y(), AS = X({
|
|
|
26647
27308
|
authors: G_([J(), z_(J())]).optional(),
|
|
26648
27309
|
categories: G_([J(), z_(J())]).optional(),
|
|
26649
27310
|
tags: G_([J(), z_(J())]).optional()
|
|
26650
|
-
}),
|
|
27311
|
+
}), MS = async (e) => {
|
|
26651
27312
|
try {
|
|
26652
27313
|
let t = e.get("db"), n = e.req.valid("query"), r = n.nodeType || "article", i = String(r).split(",").map((e) => e.trim()).filter(Boolean), a = i.map(() => "?").join(","), o = px(e.env?.BUNDLED_DEFINITIONS), s = {};
|
|
26653
27314
|
for (let e of i) {
|
|
@@ -26703,12 +27364,12 @@ var kS = new $y(), AS = X({
|
|
|
26703
27364
|
} catch (t) {
|
|
26704
27365
|
return console.error("[CMS API] Error fetching nodes list:", t), e.json({ error: "Failed to fetch nodes list" }, 500);
|
|
26705
27366
|
}
|
|
26706
|
-
},
|
|
27367
|
+
}, NS = eb({
|
|
26707
27368
|
method: "get",
|
|
26708
27369
|
path: "/",
|
|
26709
27370
|
summary: "Fetch filtered list of nodes",
|
|
26710
27371
|
tags: ["Public Node API"],
|
|
26711
|
-
request: { query:
|
|
27372
|
+
request: { query: jS },
|
|
26712
27373
|
responses: {
|
|
26713
27374
|
200: {
|
|
26714
27375
|
description: "List of nodes",
|
|
@@ -26717,9 +27378,9 @@ var kS = new $y(), AS = X({
|
|
|
26717
27378
|
500: { description: "Server error" }
|
|
26718
27379
|
}
|
|
26719
27380
|
});
|
|
26720
|
-
|
|
26721
|
-
var
|
|
26722
|
-
function
|
|
27381
|
+
AS.openapi(NS, MS);
|
|
27382
|
+
var PS = new $y();
|
|
27383
|
+
function FS(e, t) {
|
|
26723
27384
|
let n = /* @__PURE__ */ new Date();
|
|
26724
27385
|
if (e && String(e).trim() !== "") {
|
|
26725
27386
|
let t = new Date(e);
|
|
@@ -26731,22 +27392,22 @@ function PS(e, t) {
|
|
|
26731
27392
|
}
|
|
26732
27393
|
return !0;
|
|
26733
27394
|
}
|
|
26734
|
-
async function
|
|
27395
|
+
async function IS(e, t, n, r) {
|
|
26735
27396
|
try {
|
|
26736
27397
|
await e.set(t, n, r);
|
|
26737
27398
|
} catch (e) {
|
|
26738
27399
|
console.warn("[CMS Cache] Failed to write tree response to cache:", e);
|
|
26739
27400
|
}
|
|
26740
27401
|
}
|
|
26741
|
-
var
|
|
27402
|
+
var LS = X({ treeParam: J().openapi({ description: "The ID or key of the requested tree (e.g., \"main-nav\")" }) }), RS = X({
|
|
26742
27403
|
channelId: J().optional().openapi({ description: "Channel ID to resolve context-aware routing" }),
|
|
26743
27404
|
channel: J().optional().openapi({ description: "Legacy alias for channelId" }),
|
|
26744
27405
|
lang: J().optional().openapi({ description: "Requested language code for tree nodes" }),
|
|
26745
27406
|
preview: lv(["true", "false"]).optional().openapi({ description: "Set to true to retrieve unpublished draft data" })
|
|
26746
|
-
}),
|
|
27407
|
+
}), zS = X({
|
|
26747
27408
|
error: J(),
|
|
26748
27409
|
details: J().optional()
|
|
26749
|
-
}).openapi("ErrorResponse"),
|
|
27410
|
+
}).openapi("ErrorResponse"), BS = qv(() => X({
|
|
26750
27411
|
id: G_([J(), c_()]),
|
|
26751
27412
|
treeNodeId: G_([J(), c_()]),
|
|
26752
27413
|
parentId: G_([J(), c_()]).nullable(),
|
|
@@ -26759,40 +27420,40 @@ var IS = X({ treeParam: J().openapi({ description: "The ID or key of the request
|
|
|
26759
27420
|
summary: J().optional(),
|
|
26760
27421
|
url: J().optional(),
|
|
26761
27422
|
target: J().optional(),
|
|
26762
|
-
children: z_(
|
|
26763
|
-
}).passthrough()).openapi("TreeItem"),
|
|
27423
|
+
children: z_(BS).optional()
|
|
27424
|
+
}).passthrough()).openapi("TreeItem"), VS = X({
|
|
26764
27425
|
treeId: G_([c_(), J()]),
|
|
26765
27426
|
key: J(),
|
|
26766
27427
|
channelId: J(),
|
|
26767
27428
|
language: J().nullable(),
|
|
26768
27429
|
label: J(),
|
|
26769
|
-
items: z_(
|
|
26770
|
-
}).catchall(k_()).openapi("TreeResponse"),
|
|
27430
|
+
items: z_(BS)
|
|
27431
|
+
}).catchall(k_()).openapi("TreeResponse"), HS = eb({
|
|
26771
27432
|
method: "get",
|
|
26772
27433
|
path: "/{treeParam}",
|
|
26773
27434
|
summary: "Fetch CMS Navigation Tree",
|
|
26774
27435
|
description: "Retrieves a fully hydrated, recursive navigation tree structure. Uses $O(1)$ pre-computed routing table paths.",
|
|
26775
27436
|
tags: ["Public Tree API"],
|
|
26776
27437
|
request: {
|
|
26777
|
-
params:
|
|
26778
|
-
query:
|
|
27438
|
+
params: LS,
|
|
27439
|
+
query: RS
|
|
26779
27440
|
},
|
|
26780
27441
|
responses: {
|
|
26781
27442
|
200: {
|
|
26782
27443
|
description: "Fully hydrated CMS Tree payload",
|
|
26783
|
-
content: { "application/json": { schema:
|
|
27444
|
+
content: { "application/json": { schema: VS } }
|
|
26784
27445
|
},
|
|
26785
27446
|
404: {
|
|
26786
27447
|
description: "Tree or Channel not found / inactive",
|
|
26787
|
-
content: { "application/json": { schema:
|
|
27448
|
+
content: { "application/json": { schema: zS } }
|
|
26788
27449
|
},
|
|
26789
27450
|
500: {
|
|
26790
27451
|
description: "Server error during hydration",
|
|
26791
|
-
content: { "application/json": { schema:
|
|
27452
|
+
content: { "application/json": { schema: zS } }
|
|
26792
27453
|
}
|
|
26793
27454
|
}
|
|
26794
27455
|
});
|
|
26795
|
-
|
|
27456
|
+
PS.openapi(HS, async (e) => {
|
|
26796
27457
|
try {
|
|
26797
27458
|
let t = e.get("db"), { treeParam: n } = e.req.valid("param"), r = e.req.valid("query"), i = r.channelId || r.channel || "default", a = r.lang, o = r.preview === "true", s = null, c = -1;
|
|
26798
27459
|
if (i && i !== "default" && i !== "all") {
|
|
@@ -26855,7 +27516,7 @@ NS.openapi(VS, async (e) => {
|
|
|
26855
27516
|
return (S.get(n) || []).map((e) => {
|
|
26856
27517
|
let n = C.get(String(e.id)) || {}, r = {};
|
|
26857
27518
|
for (let [e, t] of Object.entries(n)) e !== "_isTreeDraft" && e !== "_draftParentId" && e !== "isNew" && e !== "hidden" && e !== "is_hidden" && e !== "isHidden" && e !== "status" && (r[e] = t);
|
|
26858
|
-
let i = !o && (e.status === "draft" || e.status === "new"), a = Number(e.isHidden) === 1 || i || n.hidden === !0 || n.hidden === 1 || n.hidden === "1" || n.hidden === "true", s =
|
|
27519
|
+
let i = !o && (e.status === "draft" || e.status === "new"), a = Number(e.isHidden) === 1 || i || n.hidden === !0 || n.hidden === 1 || n.hidden === "1" || n.hidden === "true", s = FS(e.startShowingAt === void 0 ? n.startShowingAt : e.startShowingAt, e.stopShowingAt === void 0 ? n.stopShowingAt : e.stopShowingAt), c = (e.slug || "").replace(/^\/+|\/+$/g, ""), l = !e.parentId || e.parentId === "null" || e.parentId === "", u = e.materializedPath || (l ? `/${c}` : `${t}/${c}`.replace(/\/+/g, "/")), d = e.language && String(e.language).trim() !== "" ? e.language.trim() : f, p = {
|
|
26859
27520
|
id: e.id,
|
|
26860
27521
|
treeNodeId: e.id,
|
|
26861
27522
|
parentId: e.parentId || null,
|
|
@@ -26881,7 +27542,7 @@ NS.openapi(VS, async (e) => {
|
|
|
26881
27542
|
...b,
|
|
26882
27543
|
items: w(null)
|
|
26883
27544
|
};
|
|
26884
|
-
return !o && !h && (e.header("X-Cache", "MISS"), await
|
|
27545
|
+
return !o && !h && (e.header("X-Cache", "MISS"), await IS(p, m, T, 300)), e.json(T, 200);
|
|
26885
27546
|
} catch (t) {
|
|
26886
27547
|
return console.error("[CMS Public Tree API] Error:", t), e.json({
|
|
26887
27548
|
error: "Failed to fetch public tree",
|
|
@@ -26889,19 +27550,19 @@ NS.openapi(VS, async (e) => {
|
|
|
26889
27550
|
}, 500);
|
|
26890
27551
|
}
|
|
26891
27552
|
});
|
|
26892
|
-
var
|
|
26893
|
-
function
|
|
27553
|
+
var US = new $y();
|
|
27554
|
+
function WS(e) {
|
|
26894
27555
|
let t = Number(e?.env?.CMS_CHANNEL_CACHE_TTL);
|
|
26895
27556
|
return Number.isFinite(t) && t >= 60 ? Math.floor(t) : 300;
|
|
26896
27557
|
}
|
|
26897
|
-
async function
|
|
27558
|
+
async function GS(e, t, n, r) {
|
|
26898
27559
|
try {
|
|
26899
27560
|
await e.set(t, n, r);
|
|
26900
27561
|
} catch (e) {
|
|
26901
27562
|
console.warn("[CMS Cache] Failed to write channel response to cache:", e);
|
|
26902
27563
|
}
|
|
26903
27564
|
}
|
|
26904
|
-
function
|
|
27565
|
+
function KS(e, t) {
|
|
26905
27566
|
let n = {}, r = (e) => {
|
|
26906
27567
|
if (!e || typeof e != "string") return;
|
|
26907
27568
|
let n = t?.fieldSets?.[e] || t?.fieldsets?.[e] || t?.definitions?.[e] || t?.channels?.[e] || t?.[e];
|
|
@@ -26912,7 +27573,7 @@ function GS(e, t) {
|
|
|
26912
27573
|
if (e?.fieldSets && Array.isArray(e.fieldSets) && e.fieldSets.forEach((e) => r(e)), e?.fields && i(e.fields), e?.tabs && typeof e.tabs == "object") for (let t of Object.values(e.tabs)) t?.fields && i(t.fields);
|
|
26913
27574
|
return n;
|
|
26914
27575
|
}
|
|
26915
|
-
function
|
|
27576
|
+
function qS(e, t = {}) {
|
|
26916
27577
|
let n = {}, r = Object.keys(t).length > 0;
|
|
26917
27578
|
for (let [i, a] of Object.entries(e)) {
|
|
26918
27579
|
if (i.endsWith("_meta") || [
|
|
@@ -26931,14 +27592,14 @@ function KS(e, t = {}) {
|
|
|
26931
27592
|
}
|
|
26932
27593
|
return n;
|
|
26933
27594
|
}
|
|
26934
|
-
function
|
|
26935
|
-
if (Array.isArray(e)) return e.map(
|
|
27595
|
+
function JS(e) {
|
|
27596
|
+
if (Array.isArray(e)) return e.map(JS);
|
|
26936
27597
|
if (!e || typeof e != "object") return e;
|
|
26937
27598
|
if (typeof e.id == "string" && e.id.startsWith("ast_") && typeof e.url == "string") {
|
|
26938
27599
|
let t = e.metadataOverrides || {}, n = e.variants && typeof e.variants == "object" ? e.variants : {}, r = Object.entries(n).find(([, t]) => t?.id === e.id)?.[0], i = r ? {
|
|
26939
27600
|
...t,
|
|
26940
27601
|
...t.crops?.[r] || {}
|
|
26941
|
-
} : t, a = Object.fromEntries(Object.entries(n).filter(([, t]) => t?.id !== e.id).map(([t, n]) => [t,
|
|
27602
|
+
} : t, a = Object.fromEntries(Object.entries(n).filter(([, t]) => t?.id !== e.id).map(([t, n]) => [t, JS({
|
|
26942
27603
|
...n,
|
|
26943
27604
|
title: n?.title ?? e.title ?? "",
|
|
26944
27605
|
alt: n?.alt ?? e.alt ?? "",
|
|
@@ -26952,9 +27613,9 @@ function qS(e) {
|
|
|
26952
27613
|
...Object.keys(a).length > 0 ? { variants: a } : {}
|
|
26953
27614
|
};
|
|
26954
27615
|
}
|
|
26955
|
-
return Object.fromEntries(Object.entries(e).map(([e, t]) => [e,
|
|
27616
|
+
return Object.fromEntries(Object.entries(e).map(([e, t]) => [e, JS(t)]));
|
|
26956
27617
|
}
|
|
26957
|
-
async function
|
|
27618
|
+
async function YS(e, t, n) {
|
|
26958
27619
|
let r = t.href.match(/^#node:(.+)$/), i = t.href.match(/^#asset:(.+)$/);
|
|
26959
27620
|
if (i) {
|
|
26960
27621
|
let t = i[1], n = await e.prepare("SELECT cdnUrl, storageKeyPrivate FROM assets WHERE id = ?").get(t);
|
|
@@ -26964,7 +27625,7 @@ async function JS(e, t, n) {
|
|
|
26964
27625
|
let a = r[1];
|
|
26965
27626
|
return (await e.prepare("SELECT path FROM node_routes WHERE nodeId = ? AND channelId = ? AND isCanonical = 1 LIMIT 1").get(Number(a), n))?.path || "#";
|
|
26966
27627
|
}
|
|
26967
|
-
async function
|
|
27628
|
+
async function XS(e, t, n) {
|
|
26968
27629
|
if (typeof t == "string") {
|
|
26969
27630
|
if (!t.includes("#node:") && !t.includes("data-node-id") && !t.includes("#asset:") && !t.includes("data-asset-id")) return t;
|
|
26970
27631
|
let r = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set();
|
|
@@ -26997,52 +27658,52 @@ async function YS(e, t, n) {
|
|
|
26997
27658
|
return /href\s*=\s*["'][^"']*["']/i.test(d) ? d = d.replace(/href\s*=\s*["'][^"']*["']/i, `href="${u}"`) : d += ` href="${u}"`, `<a ${d}>`;
|
|
26998
27659
|
});
|
|
26999
27660
|
}
|
|
27000
|
-
if (Array.isArray(t)) return Promise.all(t.map((t) =>
|
|
27661
|
+
if (Array.isArray(t)) return Promise.all(t.map((t) => XS(e, t, n)));
|
|
27001
27662
|
if (t && typeof t == "object") {
|
|
27002
27663
|
if (typeof t.href == "string" && (t.href.startsWith("#node:") || t.href.startsWith("#asset:"))) {
|
|
27003
|
-
let r = await
|
|
27664
|
+
let r = await YS(e, t, n), i = await Promise.all(Object.entries(t).filter(([e]) => e !== "href").map(async ([t, r]) => [t, await XS(e, r, n)]));
|
|
27004
27665
|
return {
|
|
27005
27666
|
...Object.fromEntries(i),
|
|
27006
27667
|
href: r
|
|
27007
27668
|
};
|
|
27008
27669
|
}
|
|
27009
|
-
let r = await Promise.all(Object.entries(t).map(async ([t, r]) => [t, await
|
|
27670
|
+
let r = await Promise.all(Object.entries(t).map(async ([t, r]) => [t, await XS(e, r, n)]));
|
|
27010
27671
|
return Object.fromEntries(r);
|
|
27011
27672
|
}
|
|
27012
27673
|
return t;
|
|
27013
27674
|
}
|
|
27014
|
-
var
|
|
27675
|
+
var ZS = X({ channelParam: J().openapi({ description: "The ID or key (slug) of the requested channel" }) }), QS = X({ preview: lv(["true", "false"]).optional().openapi({ description: "Set to true to retrieve unpublished draft data" }) }), $S = X({
|
|
27015
27676
|
error: J(),
|
|
27016
27677
|
details: J().optional()
|
|
27017
|
-
}).openapi("ErrorResponse"),
|
|
27678
|
+
}).openapi("ErrorResponse"), eC = X({
|
|
27018
27679
|
id: G_([c_(), J()]),
|
|
27019
27680
|
key: J()
|
|
27020
|
-
}).catchall(k_()).openapi("ChannelResponse"),
|
|
27681
|
+
}).catchall(k_()).openapi("ChannelResponse"), tC = eb({
|
|
27021
27682
|
method: "get",
|
|
27022
27683
|
path: "/{channelParam}",
|
|
27023
27684
|
summary: "Fetch CMS Channel Settings",
|
|
27024
27685
|
description: "Retrieves the fully hydrated, public-facing settings and payload for a specific CMS channel.",
|
|
27025
27686
|
tags: ["Public Channel API"],
|
|
27026
27687
|
request: {
|
|
27027
|
-
params:
|
|
27028
|
-
query:
|
|
27688
|
+
params: ZS,
|
|
27689
|
+
query: QS
|
|
27029
27690
|
},
|
|
27030
27691
|
responses: {
|
|
27031
27692
|
200: {
|
|
27032
27693
|
description: "Fully hydrated CMS Channel payload",
|
|
27033
|
-
content: { "application/json": { schema:
|
|
27694
|
+
content: { "application/json": { schema: eC } }
|
|
27034
27695
|
},
|
|
27035
27696
|
404: {
|
|
27036
27697
|
description: "Channel not found or inactive",
|
|
27037
|
-
content: { "application/json": { schema:
|
|
27698
|
+
content: { "application/json": { schema: $S } }
|
|
27038
27699
|
},
|
|
27039
27700
|
500: {
|
|
27040
27701
|
description: "Server error during hydration",
|
|
27041
|
-
content: { "application/json": { schema:
|
|
27702
|
+
content: { "application/json": { schema: $S } }
|
|
27042
27703
|
}
|
|
27043
27704
|
}
|
|
27044
27705
|
});
|
|
27045
|
-
|
|
27706
|
+
US.openapi(tC, async (e) => {
|
|
27046
27707
|
try {
|
|
27047
27708
|
let t = e.get("db"), { channelParam: n } = e.req.valid("param"), { preview: r } = e.req.valid("query"), i = r === "true", a = e.req.header("x-bypass-cache") === "true", o = `channel:${n}:${i ? "preview" : "live"}`, s = $b(e);
|
|
27048
27709
|
if (!i && !a) {
|
|
@@ -27053,23 +27714,23 @@ HS.openapi(eC, async (e) => {
|
|
|
27053
27714
|
if (!c) return e.json({ error: `Channel '${n}' not found` }, 404);
|
|
27054
27715
|
let l = c.status === "disabled" || c.status === "inactive" || c.isEnabled === 0 || c.isEnabled === !1;
|
|
27055
27716
|
if (!i && l) return e.json({ error: `Channel '${c.key || n}' is currently inactive` }, 404);
|
|
27056
|
-
let u = Number(c.id), d = e.env?.BUNDLED_DEFINITIONS, f = px(d), p = c.channelType || c.key || "website", m =
|
|
27717
|
+
let u = Number(c.id), d = e.env?.BUNDLED_DEFINITIONS, f = px(d), p = c.channelType || c.key || "website", m = KS(f.channels?.[p] || f.channels?.[c.key] || f.channels?.website || f.definitions?.["channel-base"] || {}, f), h = {}, g = i && c.draftDataJson || c.dataJson;
|
|
27057
27718
|
if (g) try {
|
|
27058
27719
|
h = typeof g == "string" ? JSON.parse(g) : g;
|
|
27059
27720
|
} catch (e) {
|
|
27060
27721
|
console.warn("[CMS Public Channel API] Failed to parse channel dataJson:", e);
|
|
27061
27722
|
}
|
|
27062
|
-
let _ =
|
|
27723
|
+
let _ = qS({
|
|
27063
27724
|
...h,
|
|
27064
27725
|
...c
|
|
27065
27726
|
}, m);
|
|
27066
|
-
_ = await fx(t, _), _ =
|
|
27727
|
+
_ = await fx(t, _), _ = JS(_), _ = await XS(t, _, u);
|
|
27067
27728
|
let v = {
|
|
27068
27729
|
id: c.id,
|
|
27069
27730
|
key: c.key,
|
|
27070
27731
|
..._
|
|
27071
27732
|
};
|
|
27072
|
-
return !i && !a && (e.header("X-Cache", "MISS"), await
|
|
27733
|
+
return !i && !a && (e.header("X-Cache", "MISS"), await GS(s, o, v, WS(e))), e.json(v, 200);
|
|
27073
27734
|
} catch (t) {
|
|
27074
27735
|
return console.error("[CMS Public Channel API] Error:", t), e.json({
|
|
27075
27736
|
error: "Failed to fetch public channel",
|
|
@@ -27077,8 +27738,8 @@ HS.openapi(eC, async (e) => {
|
|
|
27077
27738
|
}, 500);
|
|
27078
27739
|
}
|
|
27079
27740
|
});
|
|
27080
|
-
var
|
|
27081
|
-
function
|
|
27741
|
+
var nC = new $y();
|
|
27742
|
+
function rC(e, t) {
|
|
27082
27743
|
if (t === "webp") return "image/webp";
|
|
27083
27744
|
if (t === "avif") return "image/avif";
|
|
27084
27745
|
if (t === "jpeg" || t === "jpg") return "image/jpeg";
|
|
@@ -27087,7 +27748,7 @@ function nC(e, t) {
|
|
|
27087
27748
|
let n = e.toLowerCase();
|
|
27088
27749
|
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" : "application/octet-stream";
|
|
27089
27750
|
}
|
|
27090
|
-
var
|
|
27751
|
+
var iC = [
|
|
27091
27752
|
320,
|
|
27092
27753
|
640,
|
|
27093
27754
|
768,
|
|
@@ -27097,10 +27758,10 @@ var rC = [
|
|
|
27097
27758
|
2560,
|
|
27098
27759
|
3840
|
|
27099
27760
|
];
|
|
27100
|
-
function
|
|
27101
|
-
if (!(!e || isNaN(e) || e <= 0)) return
|
|
27761
|
+
function aC(e) {
|
|
27762
|
+
if (!(!e || isNaN(e) || e <= 0)) return iC.reduce((t, n) => Math.abs(n - e) < Math.abs(t - e) ? n : t);
|
|
27102
27763
|
}
|
|
27103
|
-
var
|
|
27764
|
+
var oC = eb({
|
|
27104
27765
|
method: "get",
|
|
27105
27766
|
path: "/*",
|
|
27106
27767
|
summary: "Serve & Optimize Media Assets",
|
|
@@ -27160,11 +27821,11 @@ var aC = eb({
|
|
|
27160
27821
|
}
|
|
27161
27822
|
}
|
|
27162
27823
|
});
|
|
27163
|
-
|
|
27824
|
+
nC.openapi(oC, async (e) => {
|
|
27164
27825
|
try {
|
|
27165
27826
|
let t = e.req.path.replace(/^\/media\//, "").replace(/^\//, "");
|
|
27166
27827
|
if (!t) return e.text("Asset key missing", 400);
|
|
27167
|
-
let { w: n, h: r, q: i, f: a } = e.req.valid("query"), o = !!(n || r || i || a), s =
|
|
27828
|
+
let { w: n, h: r, q: i, f: a } = e.req.valid("query"), o = !!(n || r || i || a), s = aC(n ? parseInt(n, 10) : void 0), c = e.req.header("Accept") || "", l = "";
|
|
27168
27829
|
if (o) {
|
|
27169
27830
|
let e = !a || a === "auto";
|
|
27170
27831
|
a === "avif" || e && c.includes("image/avif") ? l = "avif" : a === "webp" || e && c.includes("image/webp") ? l = "webp" : a === "jpeg" || a === "jpg" ? l = "jpeg" : a === "png" && (l = "png");
|
|
@@ -27183,7 +27844,7 @@ tC.openapi(aC, async (e) => {
|
|
|
27183
27844
|
if (!h) return e.text(`Asset not found: ${t}`, 404);
|
|
27184
27845
|
if (!o) {
|
|
27185
27846
|
let n = e.body(h, 200, {
|
|
27186
|
-
"Content-Type":
|
|
27847
|
+
"Content-Type": rC(t),
|
|
27187
27848
|
"Cache-Control": "public, max-age=31536000, immutable"
|
|
27188
27849
|
});
|
|
27189
27850
|
return u && f && e.executionCtx?.waitUntil && e.executionCtx.waitUntil(u.put(f, n.clone())), n;
|
|
@@ -27197,7 +27858,7 @@ tC.openapi(aC, async (e) => {
|
|
|
27197
27858
|
key: t,
|
|
27198
27859
|
env: e.env,
|
|
27199
27860
|
req: e.req.raw
|
|
27200
|
-
}), v =
|
|
27861
|
+
}), v = rC(t, l), y = e.body(_, 200, {
|
|
27201
27862
|
"Content-Type": v,
|
|
27202
27863
|
"Cache-Control": "public, max-age=31536000, immutable"
|
|
27203
27864
|
});
|
|
@@ -27206,8 +27867,8 @@ tC.openapi(aC, async (e) => {
|
|
|
27206
27867
|
return console.error("❌ [Public Assets Error]:", t), e.text("Internal Server Error", 500);
|
|
27207
27868
|
}
|
|
27208
27869
|
});
|
|
27209
|
-
var
|
|
27210
|
-
function
|
|
27870
|
+
var sC = new $y();
|
|
27871
|
+
function cC(e, t) {
|
|
27211
27872
|
let n = /* @__PURE__ */ new Date();
|
|
27212
27873
|
if (e && String(e).trim() !== "") {
|
|
27213
27874
|
let t = new Date(e);
|
|
@@ -27219,31 +27880,31 @@ function sC(e, t) {
|
|
|
27219
27880
|
}
|
|
27220
27881
|
return !0;
|
|
27221
27882
|
}
|
|
27222
|
-
var
|
|
27883
|
+
var lC = X({
|
|
27223
27884
|
channelId: J().optional().openapi({ description: "Optional channel ID/key to filter and resolve root paths for" }),
|
|
27224
27885
|
channel: J().optional().openapi({ description: "Legacy alias for channelId" })
|
|
27225
|
-
}),
|
|
27886
|
+
}), uC = z_(J()).openapi("PathsResponse"), dC = X({
|
|
27226
27887
|
error: J(),
|
|
27227
27888
|
details: J().optional()
|
|
27228
|
-
}).openapi("ErrorResponse"),
|
|
27889
|
+
}).openapi("ErrorResponse"), fC = eb({
|
|
27229
27890
|
method: "get",
|
|
27230
27891
|
path: "/",
|
|
27231
27892
|
summary: "Fetch All Public Paths",
|
|
27232
27893
|
description: "Retrieves a deduplicated array of all active, published node paths leveraging the $O(1)$ node_routes table. Includes both tree-bound and standalone pages.",
|
|
27233
27894
|
tags: ["Public Paths API"],
|
|
27234
|
-
request: { query:
|
|
27895
|
+
request: { query: lC },
|
|
27235
27896
|
responses: {
|
|
27236
27897
|
200: {
|
|
27237
27898
|
description: "Array of valid public URL paths",
|
|
27238
|
-
content: { "application/json": { schema:
|
|
27899
|
+
content: { "application/json": { schema: uC } }
|
|
27239
27900
|
},
|
|
27240
27901
|
500: {
|
|
27241
27902
|
description: "Server error fetching paths",
|
|
27242
|
-
content: { "application/json": { schema:
|
|
27903
|
+
content: { "application/json": { schema: dC } }
|
|
27243
27904
|
}
|
|
27244
27905
|
}
|
|
27245
27906
|
});
|
|
27246
|
-
|
|
27907
|
+
sC.openapi(fC, async (e) => {
|
|
27247
27908
|
try {
|
|
27248
27909
|
let t = e.get("db"), n = e.req.valid("query"), r = n.channelId || n.channel, i = "", a = [];
|
|
27249
27910
|
if (r && r !== "all") {
|
|
@@ -27264,19 +27925,19 @@ oC.openapi(dC, async (e) => {
|
|
|
27264
27925
|
${i}
|
|
27265
27926
|
ORDER BY nr.path ASC
|
|
27266
27927
|
`).all(...a), s = Array.isArray(o) ? o : o?.results || [], c = [];
|
|
27267
|
-
for (let e of s) e.nodeType !== "external-link" && e.path &&
|
|
27928
|
+
for (let e of s) e.nodeType !== "external-link" && e.path && cC(e.startShowingAt, e.stopShowingAt) && c.push(e.path);
|
|
27268
27929
|
let l = [...new Set(c)];
|
|
27269
27930
|
return e.json(l, 200);
|
|
27270
27931
|
} catch (t) {
|
|
27271
27932
|
return console.error("[CMS Paths API] Error:", t), e.json({ error: "Failed to fetch paths" }, 500);
|
|
27272
27933
|
}
|
|
27273
27934
|
});
|
|
27274
|
-
var
|
|
27275
|
-
function
|
|
27935
|
+
var pC = new $y();
|
|
27936
|
+
function mC(e) {
|
|
27276
27937
|
let t = (e || "").trim().toLowerCase(), n = px()?.taxonomies || {};
|
|
27277
27938
|
return n[t] ? t : n[`${t}s`] ? `${t}s` : t.endsWith("s") && n[t.slice(0, -1)] ? t.slice(0, -1) : t;
|
|
27278
27939
|
}
|
|
27279
|
-
var
|
|
27940
|
+
var hC = X({
|
|
27280
27941
|
id: c_(),
|
|
27281
27942
|
taxonomy: J(),
|
|
27282
27943
|
key: J(),
|
|
@@ -27286,14 +27947,14 @@ var mC = X({
|
|
|
27286
27947
|
data: tv(k_()),
|
|
27287
27948
|
createdAt: J(),
|
|
27288
27949
|
updatedAt: J()
|
|
27289
|
-
}),
|
|
27950
|
+
}), gC = X({
|
|
27290
27951
|
taxonomy: J(),
|
|
27291
|
-
items: z_(
|
|
27952
|
+
items: z_(hC),
|
|
27292
27953
|
total: c_()
|
|
27293
|
-
}).openapi("TaxonomyResponse"),
|
|
27954
|
+
}).openapi("TaxonomyResponse"), _C = X({
|
|
27294
27955
|
error: J(),
|
|
27295
27956
|
details: J().optional()
|
|
27296
|
-
}).openapi("ErrorResponse"),
|
|
27957
|
+
}).openapi("ErrorResponse"), vC = eb({
|
|
27297
27958
|
method: "get",
|
|
27298
27959
|
path: "/{taxonomy}",
|
|
27299
27960
|
summary: "Fetch Public Taxonomy Terms",
|
|
@@ -27303,17 +27964,17 @@ var mC = X({
|
|
|
27303
27964
|
responses: {
|
|
27304
27965
|
200: {
|
|
27305
27966
|
description: "List of taxonomy terms",
|
|
27306
|
-
content: { "application/json": { schema:
|
|
27967
|
+
content: { "application/json": { schema: gC } }
|
|
27307
27968
|
},
|
|
27308
27969
|
500: {
|
|
27309
27970
|
description: "Server error",
|
|
27310
|
-
content: { "application/json": { schema:
|
|
27971
|
+
content: { "application/json": { schema: _C } }
|
|
27311
27972
|
}
|
|
27312
27973
|
}
|
|
27313
27974
|
});
|
|
27314
|
-
|
|
27975
|
+
pC.openapi(vC, async (e) => {
|
|
27315
27976
|
try {
|
|
27316
|
-
let t = e.get("db"), n = $b(e), r = e.req.valid("param").taxonomy, i =
|
|
27977
|
+
let t = e.get("db"), n = $b(e), r = e.req.valid("param").taxonomy, i = mC(r), a = `taxonomy:public:${i}`, o = e.req.header("x-bypass-cache") === "true";
|
|
27317
27978
|
if (!o) {
|
|
27318
27979
|
let t = await n.get(a);
|
|
27319
27980
|
if (t) return e.header("X-Cache", "HIT"), e.json(t);
|
|
@@ -27347,7 +28008,7 @@ fC.openapi(_C, async (e) => {
|
|
|
27347
28008
|
return console.error("[Public Taxonomy API] Error fetching terms:", t), e.json({ error: "Failed to fetch taxonomy terms" }, 500);
|
|
27348
28009
|
}
|
|
27349
28010
|
});
|
|
27350
|
-
var $ = new $y(),
|
|
28011
|
+
var $ = new $y(), yC = !1;
|
|
27351
28012
|
$.use("*", t()), $.use("/media/*", t({
|
|
27352
28013
|
origin: "*",
|
|
27353
28014
|
allowMethods: [
|
|
@@ -27368,13 +28029,13 @@ $.use("*", t()), $.use("/media/*", t({
|
|
|
27368
28029
|
let n = new URL(e.req.url), r = (e.req.header("host") || n.hostname).split(":")[0];
|
|
27369
28030
|
e.set("currentDomain", r);
|
|
27370
28031
|
let i = wb(e);
|
|
27371
|
-
if (e.set("db", i), !
|
|
27372
|
-
await Mb(i, e.env?.BUNDLED_DEFINITIONS, e.env?.KAMA_EXTENSIONS),
|
|
28032
|
+
if (e.set("db", i), !yC) try {
|
|
28033
|
+
await Mb(i, e.env?.BUNDLED_DEFINITIONS, e.env?.KAMA_EXTENSIONS), yC = !0;
|
|
27373
28034
|
} catch (e) {
|
|
27374
28035
|
console.error("❌ [CMS Server] Failed to initialize system tables on cold start:", e);
|
|
27375
28036
|
}
|
|
27376
28037
|
await t();
|
|
27377
|
-
}), $.route("/media",
|
|
28038
|
+
}), $.route("/media", nC), $.use("/media/*", Pb()), $.get("/api/cms/ui-extensions", (e) => {
|
|
27378
28039
|
let t = (e.env?.KAMA_EXTENSIONS || []).filter((e) => e.ui).map((e) => ({
|
|
27379
28040
|
id: e.id,
|
|
27380
28041
|
name: e.name || e.id,
|
|
@@ -27414,7 +28075,7 @@ $.use("*", t()), $.use("/media/*", t({
|
|
|
27414
28075
|
}
|
|
27415
28076
|
}
|
|
27416
28077
|
return t();
|
|
27417
|
-
}), $.route("/api/v1/node",
|
|
28078
|
+
}), $.route("/api/v1/node", uS), $.route("/api/v1/nodes", AS), $.route("/api/v1/tree", PS), $.route("/api/v1/channel", US), $.route("/api/v1/all-paths", sC), $.route("/api/v1/taxonomies", pC), $.doc("/api/openapi.json", {
|
|
27418
28079
|
openapi: "3.0.0",
|
|
27419
28080
|
info: {
|
|
27420
28081
|
title: "KAMA Engine Public API",
|