@paroicms/site-generator-plugin
Version:
ParoiCMS Site Generator Plugin
83 lines (82 loc) • 3.39 kB
JavaScript
import { boolVal, isObj, nbVal, strVal, strValOrUndef } from "@paroi/data-formatters-lib";
import { ApiError } from "@paroicms/public-server-lib";
export function formatGeneratorPluginConfiguration(pluginConf) {
const anthropicApiKey = strValOrUndef(pluginConf.anthropicApiKey, { varName: "anthropicApiKey" });
const mistralApiKey = strValOrUndef(pluginConf.mistralApiKey, { varName: "mistralApiKey" });
const packName = strValOrUndef(pluginConf.packName, { varName: "packName" });
const debugDir = strValOrUndef(pluginConf.debugDir, { varName: "debugDir" });
if (!anthropicApiKey || !mistralApiKey || !packName) {
throw new Error(`Invalid configuration for plugin "@paroicms/site-generator-plugin"`);
}
return { anthropicApiKey, mistralApiKey, packName, debugDir };
}
export function formatGeneratorCommand(data) {
if (!isObj(data))
throw new ApiError("Invalid input", 400);
const command = strVal(data.command, { varName: "command" });
if (command === "newSession") {
return {
command: "newSession",
language: strVal(data.language, { varName: "language" }),
recaptchaToken: strVal(data.recaptchaToken, { varName: "recaptchaToken" }),
};
}
if (command === "renewSession") {
return {
command: "renewSession",
sessionToken: strVal(data.sessionToken, { varName: "sessionToken" }),
recaptchaToken: strVal(data.recaptchaToken, { varName: "recaptchaToken" }),
};
}
if (command === "setLanguage") {
return {
command: "setLanguage",
sessionToken: strVal(data.sessionToken, { varName: "sessionToken" }),
language: strVal(data.language, { varName: "language" }),
};
}
if (command === "loadWorkSession") {
return {
command: "loadWorkSession",
sessionToken: strVal(data.sessionToken, { varName: "sessionToken" }),
};
}
if (command === "loadStep") {
return {
command: "loadStep",
sessionToken: strVal(data.sessionToken, { varName: "sessionToken" }),
stepNumber: nbVal(data.stepNumber, { varName: "stepNumber" }),
};
}
if (command === "createSiteSchema") {
return {
command: "createSiteSchema",
sessionToken: strVal(data.sessionToken, { varName: "sessionToken" }),
prompt: formatPrompt(data.prompt),
};
}
if (command === "updateSiteSchema") {
return {
command: "updateSiteSchema",
sessionToken: strVal(data.sessionToken, { varName: "sessionToken" }),
prompt: formatPrompt(data.prompt),
fromStepNumber: nbVal(data.fromStepNumber),
};
}
if (command === "generateSite") {
return {
command: "generateSite",
sessionToken: strVal(data.sessionToken, { varName: "sessionToken" }),
fromStepNumber: nbVal(data.fromStepNumber),
withSampleData: boolVal(data.withSampleData, { varName: "withSampleData" }),
};
}
throw new ApiError(`Invalid command: ${command}`, 400);
}
function formatPrompt(val) {
const prompt = strVal(val, { varName: "prompt" });
if (prompt.length > 5000) {
throw new ApiError("Prompt is too long", 400);
}
return prompt;
}