UNPKG

@signalwire/docusaurus-plugin-llms-txt

Version:

Generate Markdown versions of Docusaurus HTML pages and an llms.txt index file

86 lines (85 loc) 3.86 kB
/** * Public type definitions for docusaurus-plugin-llms-txt * Only exports types that plugin users need to configure and use the plugin */ import { Joi } from '@docusaurus/utils-validation'; import { DEFAULT_CONTENT_SELECTORS, DEFAULT_DEPTH, PLUGIN_NAME, } from '../constants'; export { isPluginError } from '../errors'; // ============================================================================ // VALIDATION SCHEMA // ============================================================================ /** * Joi schema for plugin options validation * @internal - This is used by Docusaurus framework for options validation */ export const pluginOptionsSchema = Joi.object({ // Plugin metadata (injected by Docusaurus) id: Joi.string().default(PLUGIN_NAME), // Content processing options content: Joi.object({ // File generation enableMarkdownFiles: Joi.boolean().default(true), enableLlmsFullTxt: Joi.boolean().default(false), relativePaths: Joi.boolean().default(true), // Content filtering includeBlog: Joi.boolean().default(false), includePages: Joi.boolean().default(false), includeDocs: Joi.boolean().default(true), includeVersionedDocs: Joi.boolean().default(true), includeGeneratedIndex: Joi.boolean().default(true), excludeRoutes: Joi.array().items(Joi.string()).default([]), // Content extraction contentSelectors: Joi.array() .items(Joi.string()) .min(1) .default([...DEFAULT_CONTENT_SELECTORS]), routeRules: Joi.array() .items(Joi.object({ route: Joi.string().required(), depth: Joi.number().integer().min(1).max(5), contentSelectors: Joi.array().items(Joi.string()), categoryName: Joi.string(), includeOrder: Joi.array().items(Joi.string()), })) .default([]), // Format options remarkStringify: Joi.object().unknown(true).default({}), remarkGfm: Joi.alternatives() .try(Joi.boolean(), Joi.object().unknown(true)) .default(true), rehypeProcessTables: Joi.boolean().default(true), // Unified plugin system (standard unified.js formats) beforeDefaultRehypePlugins: Joi.array() .items(Joi.alternatives().try(Joi.function(), Joi.array().items(Joi.function(), Joi.any(), Joi.any()).min(1).max(3))) .default([]), rehypePlugins: Joi.array() .items(Joi.alternatives().try(Joi.function(), Joi.array().items(Joi.function(), Joi.any(), Joi.any()).min(1).max(3))) .default([]), beforeDefaultRemarkPlugins: Joi.array() .items(Joi.alternatives().try(Joi.function(), Joi.array().items(Joi.function(), Joi.any(), Joi.any()).min(1).max(3))) .default([]), remarkPlugins: Joi.array() .items(Joi.alternatives().try(Joi.function(), Joi.array().items(Joi.function(), Joi.any(), Joi.any()).min(1).max(3))) .default([]), }).default({}), // Structure options depth: Joi.number().integer().min(1).max(5).default(DEFAULT_DEPTH), enableDescriptions: Joi.boolean().default(true), siteTitle: Joi.string().allow(''), siteDescription: Joi.string().allow(''), optionalLinks: Joi.array() .items(Joi.object({ title: Joi.string().required(), url: Joi.string().required(), description: Joi.string(), })) .default([]), includeOrder: Joi.array().items(Joi.string()).default([]), // Environment options runOnPostBuild: Joi.boolean().default(true), // Logging configuration onRouteError: Joi.string() .valid('ignore', 'log', 'warn', 'throw') .default('warn'), logLevel: Joi.number().integer().min(0).max(3).default(1), });