@paroicms/server
Version:
The ParoiCMS server
59 lines • 2.06 kB
JavaScript
import { getHandleOfFieldOnNode } from "@paroicms/public-server-lib";
export function getHandleOfSiteAdminFavicon() {
return "site:adminUiFavicon";
}
export function getHandleOfSiteFavicon() {
return "site:favicon";
}
export function getHandleOfField(siteContext, options) {
const { fieldType, nodeId, language } = options;
if (fieldType.localized && !fieldType.withGallery) {
if (language === undefined)
throw new Error("Missing language for lNode field");
if (nodeId === siteContext.siteNodeId)
return `site:${fieldType.name}:${language}`;
return `lnod:${nodeId}:${fieldType.name}:${language}`;
}
return getHandleOfFieldOnNode({
siteNodeId: siteContext.siteNodeId,
nodeId,
fieldName: fieldType.name,
});
}
export function getHandleOfSiteField(siteContext, options) {
const { fieldName, language } = options;
const fieldType = siteContext.siteSchema.nodeTypes._site.fields.find((f) => f.name === fieldName);
if (!fieldType)
throw new Error(`Unknown site field '${fieldName}'`);
return getHandleOfField(siteContext, {
fieldType,
nodeId: siteContext.siteNodeId,
language,
});
}
export function getNodeIdFromHandle(siteContext, handle) {
const parsed = parseHandle(handle);
if (parsed.kind === "site") {
return siteContext.siteNodeId;
}
return parsed.nodeId;
}
export function extractNodeIdFromHandle(handle) {
const match = handle.match(/^(?:node|lnod):(\d+):/);
return match?.[1];
}
export function parseHandle(handle) {
if (handle.startsWith("site:")) {
return { kind: "site" };
}
const nodeMatch = handle.match(/^node:(\d+):/);
if (nodeMatch) {
return { kind: "node", nodeId: nodeMatch[1] };
}
const lnodMatch = handle.match(/^lnod:(\d+):/);
if (lnodMatch) {
return { kind: "lnod", nodeId: lnodMatch[1] };
}
throw new Error(`Invalid handle format: ${handle}`);
}
//# sourceMappingURL=media-handles.helpers.js.map