UNPKG

@paroicms/server

Version:
54 lines 2.29 kB
import { unwrapReadFieldValue, unwrapReadFieldValues, } from "@paroicms/public-anywhere-lib"; import { createBackendPluginService, createPluginRenderingService, } from "./make-backend-plugin-service.js"; export async function executeRenderingHook(renderingContext, hookName, hookPayload) { const { siteContext } = renderingContext; const fieldValues = unwrapReadFieldValues(hookPayload.values); for (const fieldType of hookPayload.fieldTypes) { if (fieldType.storedAs === "labeling") continue; const { name, pluginName } = fieldType; if (!pluginName) continue; const list = siteContext.renderingHooks.get(hookName); if (!list) continue; const options = Object.freeze({ ...hookPayload.options, language: renderingContext.language, fieldType, }); let value = fieldValues[name]; for (const { handler, plugin } of list) { if (value === undefined) break; const service = createPluginRenderingService(renderingContext, createBackendPluginService(siteContext, plugin)); value = await handler({ service, value, options }); } if (value !== undefined) { fieldValues[name] = value; } } return fieldValues; } export async function executeRenderingHookForExcerpt(renderingContext, hookPayload) { const { siteContext } = renderingContext; if (hookPayload.value === undefined) return; let value = unwrapReadFieldValue(hookPayload.value).value; const list = siteContext.renderingHooks.get("fieldPreprocessor"); if (!list) return typeof value === "string" ? value : undefined; const options = { outputType: "plainText", language: renderingContext.language, fieldType: hookPayload.fieldType, }; for (const { handler, plugin } of list) { if (value === undefined) break; const service = createPluginRenderingService(renderingContext, createBackendPluginService(siteContext, plugin)); value = await handler({ service, value: value, options }); } return typeof value === "string" ? value : undefined; } //# sourceMappingURL=rendering-hook.js.map