mirror of
https://github.com/facebook/docusaurus.git
synced 2025-06-03 03:12:35 +02:00
Co-authored-by: OzakIOne <OzakIOne@users.noreply.github.com> Co-authored-by: sebastien <lorber.sebastien@gmail.com>
65 lines
2.4 KiB
TypeScript
65 lines
2.4 KiB
TypeScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
import {
|
|
Joi,
|
|
RemarkPluginsSchema,
|
|
RehypePluginsSchema,
|
|
AdmonitionsSchema,
|
|
RouteBasePathSchema,
|
|
URISchema,
|
|
} from '@docusaurus/utils-validation';
|
|
import {GlobExcludeDefault} from '@docusaurus/utils';
|
|
import type {OptionValidationContext} from '@docusaurus/types';
|
|
import type {PluginOptions, Options} from '@docusaurus/plugin-content-pages';
|
|
|
|
export const DEFAULT_OPTIONS: PluginOptions = {
|
|
path: 'src/pages', // Path to data on filesystem, relative to site dir.
|
|
routeBasePath: '/', // URL Route.
|
|
include: ['**/*.{js,jsx,ts,tsx,md,mdx}'], // Extensions to include.
|
|
exclude: GlobExcludeDefault,
|
|
mdxPageComponent: '@theme/MDXPage',
|
|
remarkPlugins: [],
|
|
rehypePlugins: [],
|
|
beforeDefaultRehypePlugins: [],
|
|
beforeDefaultRemarkPlugins: [],
|
|
admonitions: true,
|
|
showLastUpdateTime: false,
|
|
showLastUpdateAuthor: false,
|
|
editLocalizedFiles: false,
|
|
};
|
|
|
|
const PluginOptionSchema = Joi.object<PluginOptions>({
|
|
path: Joi.string().default(DEFAULT_OPTIONS.path),
|
|
routeBasePath: RouteBasePathSchema.default(DEFAULT_OPTIONS.routeBasePath),
|
|
include: Joi.array().items(Joi.string()).default(DEFAULT_OPTIONS.include),
|
|
exclude: Joi.array().items(Joi.string()).default(DEFAULT_OPTIONS.exclude),
|
|
mdxPageComponent: Joi.string().default(DEFAULT_OPTIONS.mdxPageComponent),
|
|
remarkPlugins: RemarkPluginsSchema.default(DEFAULT_OPTIONS.remarkPlugins),
|
|
rehypePlugins: RehypePluginsSchema.default(DEFAULT_OPTIONS.rehypePlugins),
|
|
beforeDefaultRehypePlugins: RehypePluginsSchema.default(
|
|
DEFAULT_OPTIONS.beforeDefaultRehypePlugins,
|
|
),
|
|
beforeDefaultRemarkPlugins: RemarkPluginsSchema.default(
|
|
DEFAULT_OPTIONS.beforeDefaultRemarkPlugins,
|
|
),
|
|
admonitions: AdmonitionsSchema.default(DEFAULT_OPTIONS.admonitions),
|
|
showLastUpdateTime: Joi.bool().default(DEFAULT_OPTIONS.showLastUpdateTime),
|
|
showLastUpdateAuthor: Joi.bool().default(
|
|
DEFAULT_OPTIONS.showLastUpdateAuthor,
|
|
),
|
|
editUrl: Joi.alternatives().try(URISchema, Joi.function()),
|
|
editLocalizedFiles: Joi.boolean().default(DEFAULT_OPTIONS.editLocalizedFiles),
|
|
});
|
|
|
|
export function validateOptions({
|
|
validate,
|
|
options,
|
|
}: OptionValidationContext<Options, PluginOptions>): PluginOptions {
|
|
const validatedOptions = validate(PluginOptionSchema, options);
|
|
return validatedOptions;
|
|
}
|