mirror of
https://github.com/facebook/docusaurus.git
synced 2025-12-30 14:14:17 +00:00
54 lines
1.7 KiB
TypeScript
54 lines
1.7 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} from '@docusaurus/utils-validation';
|
|
import type {
|
|
ThemeConfig,
|
|
ThemeConfigValidationContext,
|
|
} from '@docusaurus/types';
|
|
|
|
export const DEFAULT_CONFIG = {
|
|
// Enabled by default, as it makes sense in most cases
|
|
// see also https://github.com/facebook/docusaurus/issues/5880
|
|
contextualSearch: true,
|
|
|
|
searchParameters: {},
|
|
searchPagePath: 'search',
|
|
};
|
|
|
|
export const Schema = Joi.object({
|
|
algolia: Joi.object({
|
|
// Docusaurus attributes
|
|
contextualSearch: Joi.boolean().default(DEFAULT_CONFIG.contextualSearch),
|
|
externalUrlRegex: Joi.string().optional(),
|
|
// Algolia attributes
|
|
appId: Joi.string().required().messages({
|
|
'any.required':
|
|
'"algolia.appId" is required. If you haven\'t migrated to the new DocSearch infra, please refer to the blog post for instructions: https://docusaurus.io/blog/2021/11/21/algolia-docsearch-migration',
|
|
}),
|
|
apiKey: Joi.string().required(),
|
|
indexName: Joi.string().required(),
|
|
searchParameters: Joi.object()
|
|
.default(DEFAULT_CONFIG.searchParameters)
|
|
.unknown(),
|
|
searchPagePath: Joi.alternatives()
|
|
.try(Joi.boolean().invalid(true), Joi.string())
|
|
.allow(null)
|
|
.default(DEFAULT_CONFIG.searchPagePath),
|
|
})
|
|
.label('themeConfig.algolia')
|
|
.required()
|
|
.unknown(), // DocSearch 3 is still alpha: don't validate the rest for now
|
|
});
|
|
|
|
export function validateThemeConfig({
|
|
validate,
|
|
themeConfig,
|
|
}: ThemeConfigValidationContext<ThemeConfig>): ThemeConfig {
|
|
return validate(Schema, themeConfig);
|
|
}
|