UNPKG

@paroicms/server

Version:
47 lines 1.81 kB
import { getNodeTypeByName } from "@paroicms/internal-anywhere-lib"; import { type } from "arktype"; import { executeHook } from "./make-backend-plugin-service.js"; const StringOrUndefOrNullAT = type("string|undefined|null"); export async function executeBeforeSaveValues(siteContext, options) { const { typeName, language, values } = options; const nodeType = getNodeTypeByName(siteContext.siteSchema, typeName); const typeMap = new Map((nodeType.fields ?? []).map((item) => [item.name, item])); const formattedValues = {}; for (const [fieldName, value] of Object.entries(values)) { formattedValues[fieldName] = await processFieldValue(siteContext, { fieldName, value, language, typeMap, }); } return formattedValues; } async function processFieldValue(siteContext, options) { const { fieldName, value, language, typeMap } = options; if (value === undefined) return value; const fieldType = typeMap.get(fieldName); if (!fieldType) throw new Error(`Field type not found for '${fieldName}'`); let processedValue = value; processedValue = (await executeHook(siteContext, "beforeSaveValue", { value: processedValue, options: { fieldType, language, }, })); if (fieldType.dataType === "string" && fieldType.normalizeTypography && !fieldType.pluginName && typeof processedValue === "string") { processedValue = StringOrUndefOrNullAT.assert(await executeHook(siteContext, "normalizeTypography", { value: processedValue, options: { language }, })) ?? null; } return processedValue; } //# sourceMappingURL=before-save-values-hook.js.map